Linux에서 *.txt 패턴을 제외한 모든 파일을 삭제하는 방법은 무엇입니까?

Linux에서 *.txt 패턴을 제외한 모든 파일을 삭제하는 방법은 무엇입니까?

txt현재 디렉토리의 모든 파일을 삭제하는 방법을 알고 있습니다 rm *.txt. 현재 디렉토리에서 파일을 제외한 모든 파일을 삭제하는 방법을 아는 사람이 있습니까 txt?

답변1

당신은 그것을 사용할 수 있습니다 find:

find . -type f ! -name '*.txt' -delete

또는 bash의 확장된 와일드카드 기능:

shopt -s extglob
rm *.!(txt)

또는 zsh에서:

setopt extendedglob
rm *~*.txt(.)
#  ||     ^^^ Only plain files
#  ||^^^^^ files ending in ".txt"
#  | \Except
#   \Everything

답변2

그냥 전부 삭제하고 싶다면문서'*.txt' 외에도 다음 명령을 사용할 수 있습니다.

$ find . -type f ! -name "*.txt" -exec rm -rf {} \;

하지만 삭제하고 싶다면목차파일과 함께 다음을 사용할 수 있습니다.

$ find . ! -name "*.txt" -exec rm -r {} \;

답변3

이를 수행하는 방법에는 여러 가지가 있습니다. 하지만 가장 간단한 방법은 (bash)입니다.

shopt -s extglob
rm !(*.txt)

답변4

한 가지 솔루션은 다음을 수행하지 않습니다 find.

mv dir/*.txt otherdir/
rm -r dir
mv otherdir dir

이는 모든 유형의 쉘에서 작동합니다.

관련 정보