.bak
하나의 명령 줄을 사용하여 현재 디렉토리 및 모든 하위 폴더에서 특정 확장자 (예 :)를 가진 모든 파일을 안전하게 삭제하려면 어떻게해야 합니까? 간단히 말해서 rm
한 번 잘못 사용 했기 때문에 사용하기가 두려운 데 조언이 필요합니다.
.bak
하나의 명령 줄을 사용하여 현재 디렉토리 및 모든 하위 폴더에서 특정 확장자 (예 :)를 가진 모든 파일을 안전하게 삭제하려면 어떻게해야 합니까? 간단히 말해서 rm
한 번 잘못 사용 했기 때문에 사용하기가 두려운 데 조언이 필요합니다.
답변:
당신 rm
이 두려워한다면이 경우 에도 사용할 필요가 없습니다 . 사용 find
:
find . -name "*.bak" -type f -delete
그러나 예방 조치와 함께 사용하십시오. 먼저 실행하십시오.
find . -name "*.bak" -type f
정확히 어떤 파일을 제거할지 확인하십시오.
또한 명령 의 마지막 인수 인지 확인하십시오-delete
. 당신이 전에 넣어 경우 -name *.bak argument
, 그것은 모두 삭제됩니다 .
rm *.bak
하위 디렉토리에서는 작동하지 않습니다.
rm *.bak
을 사용 하면 현재 디렉토리에서 .bak로 끝나는 모든 파일 만 삭제됩니다. 또한 globs를 사용하여 바이올린을 연주하거나 -r 옵션을 사용하거나 find 예제를 사용하여 서브 디렉토리에서 작업을 수행하십시오.
rm -r *.bak
! 또한 .bak
모든 내용으로 끝나는 디렉토리를 제거합니다 .
-delete
명령의 마지막 인수 인지 확인하십시오 . -name *.bak
인수 앞에 놓으면 모든 것이 삭제됩니다.
find . -name "*.bak" -type f -print0 | xargs -0 /bin/rm -f
-delete
플래그 대신 이것을 사용하면 이점이 없다고 생각 find
합니다. find로 파일을 삭제하기위한 GNU 매뉴얼 항목 에서 더 많은 정보를 찾을 수 있습니다 .
파일을 삭제하는 것은 당신이 사용해야 rm
하는 것이 아닙니다 . 대안은 다음과 같습니다.
sudo apt-get install gvfs # install a tool that allows you to put stuff in the trash
alias "trash"="gvfs-trash" # you can also put this in .bash_aliases or simply use the command without alias
trash *.bak # trash the files (thus moving them to the trash bin)
Flimm이 의견에 언급 한 바와 같이 :
패키지
trash-cli
는gvfs-trash
gvfs에 의존하지 않는 것과 같은 일을 합니다.
그래서:
sudo apt-get install trash-cli
trash-cli
패키지는 trash
우리가 원하는 것을 수행 하는 명령을 제공 하기 때문에 별명을 만들 필요가 없습니다 .
Eliah Kagan이 광범위한 의견을 명확하게 밝히면을 사용하여이 재귀를 만들 수도 있습니다 find
. 이 경우 별칭을 사용할 수 없으므로 아래 명령은 설치 한 것으로 가정합니다 trash-cli
. 나는 엘리아의 의견을 요약한다 :
이 명령은 .bak
현재 디렉토리 나 하위 디렉토리 또는 아래의 모든 파일과 심볼릭 링크를 찾아 표시 합니다.
find . -name '*.bak' -xtype f
그것들을 삭제하려면 -exec
다음 trash
명령을 추가하십시오 :
find . -name '*.bak' -xtype f -exec trash {} +
-xtype f
파일과 파일에 대한 심볼릭 링크를 선택하지만 폴더는 선택하지 않습니다. .bak 폴더도 삭제하려면 해당 부분을 제거하고을 사용 -execdir
하면 디렉토리 내의 파일에 cannot trash non-existent
오류가 발생 하지 않습니다 ..bak
.bak
find . -name '*.bak' -execdir trash {} +
rm
물건을 삭제 하는 데 사용하지 마십시오 "는 논란의 여지가 있지만, 일을 취소 할 수있는 것을 사용하는 것이 현명하다는 데 동의해야합니다.
trash-cli
는에 gvfs-trash
대한 종속성이없는 것과 동일한 작업을 수행합니다 gvfs
.
find . -name "*.bak" -type f
무엇을 trash *.bak
삭제 했는지 표시하는 것 같습니다 . 그게 진짜야? 당신과 함께 휴지통으로 디렉토리를 이동할 수 있습니다 trash
또는 gvfs-trash
, 그러나 trash *.bak
의지는 파일과 이름이이로 끝나는 디렉토리로 이동 .bak
하고이 현재 디렉토리에 바로 상주합니다. 셸이 확장 *.bak
되므로 이름 trash *.bak
이 아닌 .bak
하위 디렉토리의 파일 에는 영향을 미치지 않습니다 .bak
.
ls *.bak
(당신이 생각하는 것)는 trash *.bak
쓰레기를 나열합니다 . 아래의 find . -name '*.bak' -xtype f -exec trash {} +
모든 .bak
파일을 휴지통에 버립니다 .
. 별명을 사용할 수 없으므로 대신 설치 trash-cli
하거나 쓰십시오 gvfs-trash
. 다음은 예입니다. -xtype f
파일과 파일에 대한 심볼릭 링크를 선택하지만 폴더는 선택하지 않습니다. .bak
폴더 도 삭제하려면을 사용하여 디렉토리 내의 파일에 대한 오류를 find . -name '*.bak' -execdir trash {} +
방지 cannot trash non existent
합니다 . 귀하의 답변에 자유롭게 사용하십시오. .bak
.bak
이름이나 접미사가 고려 된 모든 파일을 재귀 적으로 삭제하십시오.
find . -name '*.pyc' -type f -delete
고려되는 이름을 가진 모든 디렉토리를 재귀 적으로 삭제하십시오.
find ~ -path '*/__pycache__/*' -delete
find ~ -type d -name '__pycache__' -empty -delete
다소 엄격하게 제어되지는 않지만 한 줄로 표시됩니다.
find ~ -path '*/__pycache__*' -delete
[ 참고 ] :
d
디렉토리 옵션이며 f
파일 옵션입니다.
git repo 안에 있다면 다음을 사용할 수 있습니다.
git clean -fdx
.gitignore에서 추적되지 않은 파일과 파일을 삭제합니다.
rm *.bak
가요?