tcsh bash 명령과 동일합니다(가장 최근에 수정된 10개의 디렉터리를 제외하고 모두 삭제).

tcsh bash 명령과 동일합니다(가장 최근에 수정된 10개의 디렉터리를 제외하고 모두 삭제).

아래에서는 최신 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])

어떤 경우든 디렉토리의 수정 시간은 해당 항목이 마지막으로 추가, 삭제되거나 이름이 변경된 시간(하위 디렉토리가 아님)만 반영하므로 해당 디렉토리 내 데이터의 수명을 측정하는 것이 아니며 일반적으로 수정해서는 안 됩니다. 삭제 기준으로 사용됩니다.

관련 정보