나는 파일을 가지고 있습니다 :
a.txt
b.txt
e.txt
c.c
d.o
.txt
포함되지 않은 파일 만 제거하고 싶으 e.txt
므로 마지막으로 남은 파일은 다음과 같습니다.
e.txt
c.c
d.o
답변1
주어진:
cpetro01@<work_laptop> ~/Notes/test
$ ls
a.jpg a.txt b.mov b.txt c.jpg c.mov
하다:
$ find ./ -name "*.txt" -not -name "e.txt"
./a.txt
./b.txt
그러므로:
cpetro01@<work_laptop> ~/Notes/test
$ ls
a.jpg a.txt b.mov b.txt c.jpg c.mov e.txt
cpetro01@<work_laptop> ~/Notes/test
$ find ./ -name "*.txt" -not -name "e.txt" -exec rm {} \;
cpetro01@<work_laptop> ~/Notes/test
$ ls
a.jpg b.mov c.jpg c.mov e.txt
그렇게요?
답변2
두 가지 방법:
변수를 사용하여
GLOBIGNORE
와일드카드 사용 시 무시될 파일 이름을 나타냅니다.GLOBIGNORE=e.txt rm -- *.txt unset GLOBIGNORE
옵션을 설정 하고 확장된 와일드카드를 사용하여 다음을 제외한 모든 파일을
extglob
일치시킵니다 ..txt
e.txt
shopt -s extglob rm -- !(e).txt shopt -u extglob
답변3
.txt
다음을 제외한 모든 파일이 나열됩니다 e.txt
.
ls -1 *.txt | grep -v '^e.txt$'
그럼 당신은 할 수 있습니다명령 대체다음 파일을 삭제 하라고 지시하세요 rm
:
rm $(ls -1 *.txt | grep -v '^e.txt$')