아래에서는 최신 10개의 디렉터리를 유지하고 나머지는 삭제합니다. bash와 잘 작동합니다.
TCSH는 아래 bash와 동일합니까?
keep = 10
rm -r $(ls -dt */ | tail -n +$((keep+1)))
답변1
set keep = 10
@ tail = $keep + 1
rm -rf -- "`ls -dt -- */ | tail -n +$tail`"
디렉토리 이름(또는 디렉토리에 대한 심볼릭 링크)에 개행 문자가 포함된 경우에만 실패하지만, 결함이 있는 bash 코드보다 최소한 훨씬 더 안정적입니다.
Kusalananda가 의견에서 말했듯이 zsh가 더 적합한 쉘이 될 것입니다.
keep=10
rm -rf -- *(/om[keep+1,-1])
어떤 경우든 디렉토리의 수정 시간은 해당 항목이 마지막으로 추가, 삭제되거나 이름이 변경된 시간(하위 디렉토리가 아님)만 반영하므로 해당 디렉토리 내 데이터의 수명을 측정하는 것이 아니며 일반적으로 수정해서는 안 됩니다. 삭제 기준으로 사용됩니다.