답변:
Bash가 globbing을 확장했습니다 (먼저 테스트 한 다음 에코 제거).
shopt -s extglob
echo rm -rf !(A)
shopt | grep ext플러그인이 활성화되어있는 경우 확인할 수 있습니다.
이건 어떤가요:
mv A /tmp/
rm * -rf
mv /tmp/A .
이것은 다른 명령에서 오타의 "무서움"을 피합니다.
같은 것
find . -type d -not -name A -exec rm -ir {} \;
해야 할 것.
편집하다
정말해야합니다
find . -type d -maxdepth 1 -not -name A -exec rm -ir {} \;
findA 아래에서 되풀이 되지 않도록
나는 보통 ls 명령을 먼저 처리 하여이 작업을 수행합니다. 나는 유닉스 머신이 아니지만 다음과 같은 것입니다 :
ls -lda "[^ A]"
일단 그것을 얻으면 명령으로 파이프하십시오.
ls -lda "[^ A]"| xargs rm -rf
정규식이 잘못되면 위의 내용을 자유롭게 편집하십시오 ...
find -print0을 통과하고 xargs에 -0을 전달하지 않고 일부 사람들이 -exec 및 rm로 표시 했으므로 find를 사용하지 마십시오. 공백이나 줄 바꿈이있는 파일 이름과 혼동됩니다.
$ mkdir 'foo foo'
$ mkdir foo$'\n'foo
$ find . -type d -exec rm -ir {} \;
rm: cannot remove directory `.'
rm: remove directory `./foo\nfoo'? y
find: `./foo\nfoo': No such file or directory
rm: remove directory `./foo foo'? y
find: `./foo foo': No such file or directory
대신 xargs -0, '-exec command {} +'와 함께 find -print0을 사용하거나 찾기에서 지원하는 경우 -delete를 사용하십시오.