programing

파일을 재귀적으로 삭제하다

instargram 2023. 4. 22. 08:25
반응형

파일을 재귀적으로 삭제하다

그 귀찮은 ._와 를 제거할 수 있는 해결책을 가진 사람이 있습니까?Mac에서 Linux 서버로 파일을 옮긴 후 얻는 DS_Store 파일?

시작 디렉토리를 지정하고 놓아둘까요?예를 들어 /var/www/www/down...

디렉토리로 변경하고 다음을 사용합니다.

find . -name ".DS_Store" -print0 | xargs -0 rm -rf
find . -name "._*" -print0 | xargs -0 rm -rf

테스트되지 않은 경우 먼저 xargs 없이 테스트해 보십시오!

먼저 디렉토리로 변경하는 대신 검색 후 기간을 디렉토리로 바꿀 수 있습니다.

find /dir/here ...
find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete

새로운 Findutils 지원-delete, 그래서:

find . -name ".DS_Store" -delete

더하다-print삭제 목록도 가져옵니다.

최신 POSIX 시스템을 가지고 있다면 명령어가 도움이 될 것입니다.적어도 OS X 10.8에서는 사용할 수 있고, MacOS 10.12(Mojave)에서 테스트한 다른 사용자에게는 사용할 수 있습니다.

@X-Instance의 투고 코멘트에서 @eemient의 공로를 인정합니다(자신의 답변을 보증하기에 충분하다고 생각됨).

간단한 명령어:

rm `find ./ -name '.DS_Store'` -rf
rm `find ./ -name '._'` -rf

행운을 빕니다.

cd /var/www/html && find . -name '.DS_Store' -print0 | xargs -0 rm
cd /var/www/html && find . -name '._*' -print0 | xargs -0 rm

bash 대신 zsh로 전환할 수 있습니다.이를 통해 **를 사용하여 디렉토리 트리의 임의의 위치에 있는 파일을 일치시킬 수 있습니다.

$ rm /var/www/html/**/_* /var/www/html/**/.DS_Store

다음과 같이 조합할 수도 있습니다.

$ rm /var/www/html/**/(_*|.DS_Store)

Zsh에는 bash에 없는 다른 기능이 많이 있지만 그것만으로도 바꿀 가치가 있습니다.대부분의 (아마도 모든) Linux Distros 및 sygwin 및 OS X에서 사용할 수 있습니다.

자세한 내용은 zsh 사이트에서 확인할 수 있습니다.

find . -name "FILE-TO-FIND"-exec rm -rf {} \;

"Thumbs.db"를 재귀적으로 삭제하는 예

find . -iname "Thumbs.db" -print0 | xargs -0 rm -rf

검증 기준:

find . -iname "Thumbs.db"

현재 경로 내에 "Thumbs.db"가 있는 항목이 표시되지 않습니다.

이 답변에 인쇄를 추가하여 무엇이 삭제되었는지 확인하는 것이 좋습니다.

find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete -print

Bash 4.0++가 있는 경우

#!/bin/bash
shopt -s globstar
for file in /var/www/html/**/.DS_Store /var/www/html/**/._ 
do
 echo rm "$file"
done

주의사항:

'-delete'는 재귀적이지 않습니다.그래서 만약에.임시의항목(폴더)에 파일이 포함되어 있으면 명령이 실패합니다.

mac에 의해 작성된 많은 성가신 파일이 있습니다.DS_Store . . . . . . . . . . .DS_Store.임시의항목 .apdisk

이 명령어 하나로 모든 것이 해결됩니다.여러 일치에 대해 찾기 실행을 반복하여 저장합니다.

find /home/foo \( -name '.DS_Store' -or -name '._.DS_Store' -or -name '._*' -or -name '.TemporaryItems' -or -name '.apdisk' \) -exec rm -rf {} \;

이것도 동작합니다.

sudo rm -rf 2018-03-*

여기서 2018-03-(다른 형식) 형식의 파일을 삭제합니다.

단순하게 받아들여라.

언급URL : https://stackoverflow.com/questions/2016844/recursively-remove-files

반응형