Mac에서 Linux 서버로 파일을 옮긴 후에 얻는 성가신 ._ 및 .DS_Store 파일을 제거하는 솔루션이 있습니까?
시작 디렉토리를 지정하고 그대로 두시겠습니까? / var / www / html / down ...처럼
Mac에서 Linux 서버로 파일을 옮긴 후에 얻는 성가신 ._ 및 .DS_Store 파일을 제거하는 솔루션이 있습니까?
시작 디렉토리를 지정하고 그대로 두시겠습니까? / var / www / html / down ...처럼
답변:
디렉토리로 변경하고 다음을 사용하십시오.
find . -name ".DS_Store" -print0 | xargs -0 rm -rf
find . -name "._*" -print0 | xargs -0 rm -rf
테스트되지 않았으므로 먼저 xargs없이 시도하십시오!
먼저 디렉토리로 변경하는 대신 찾기 후 마침표를 디렉토리로 바꿀 수 있습니다.
find /dir/here ...
-delete
이를 줄일 수 있는 작업을 지원합니다 . @JT : 아래에서 재귀 적으로 검색 .
합니다. 파일과 하위 디렉토리의 수에 따라 ... 업로드하는 것을 금지 할 수는 없습니까?
-r
당신이 어떤 디렉토리를 삭제하지 않기 때문에 (순환) 플래그 것은 ..이 경우에는 사용하지 않는 것이 좋습니다
command rm
더 나은 (, 더 직접) 솔루션을 수? ( "직접"으로 말하면 현재 당면한 문제를 다루고 다른 것을 다루지 않으므로 원치 않는 부작용이 발생할 가능성이 적으며 코드를 유지 해야하는 사람에게는 더 설명이 필요합니다. 나중에.)
최근 findutils의 지원 -delete
, 그래서 :
find . -name ".DS_Store" -delete
-print
삭제 목록을 얻으려면 추가하십시오 .
최신 POSIX 시스템을 보유하고 있다면 명령이 도움이 될 것입니다. 적어도 그것은 OS X 10.8에서 나를 위해 작동하고 macOS 10.12 (Mojave)에서 그것을 테스트 한 다른 사람들에게 작동합니다.
@ X-Istence의 게시물에 대한 의견에서 @ephemient에게 감사드립니다.
find
기본적으로 현재 작업 디렉토리로 되풀이 되므로 필요하지 않습니다 .
.
macOS 10.12 (Sierra)에는 여전히 필요 합니다.
간단한 명령 :
rm `find ./ -name '.DS_Store'` -rf
rm `find ./ -name '._'` -rf
행운을 빕니다!
rm -i
찾기를 사용했습니다 ./ -name '* py'` -rf , which did NOT prompt me to delete files. you will need to take it on the end (i.e.
-rfi`). 백업 스크립트를 주셔서 감사합니다.
-bash: /bin/rm: Argument list too long
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가 부족한 많은 다른 기능이 있지만 그중 하나만으로도 가치가 있습니다. cygwin 및 OS X뿐만 아니라 대부분의 (아마도 모든) Linux 배포판에서 사용할 수 있습니다.
zsh 사이트 에서 자세한 정보를 찾을 수 있습니다 .
**
:-) (기본적 shopt -s globstar
으로 설정 되어 있지는 않지만 설정해야 함)
find . -name "FILE-TO-FIND"-exec rm -rf {} \;
find
그 지원을, +
: xargs를 같은있다 find . -name "FILE-TO-FIND" -exec rm -rf {} +
(또한, 당신은 공간 이전이 누락 - -exec
)
"Thumbs.db"를 재귀 적으로 삭제하는 예;
find . -iname "Thumbs.db" -print0 | xargs -0 rm -rf
다음으로 확인하십시오.
find . -iname "Thumbs.db"
현재 경로 안에 "Thumbs.db"가있는 항목은 표시되지 않습니다.
xargs
과 print0
대신 exec
(이유가).
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'는 재귀 적이 지 않습니다. 따라서 .TemporaryItems (폴더)에 파일이 있으면 명령이 실패합니다.
macs에서 생성 한 성가신 파일이 많이 있습니다. .DS_Store ._. DS_Store .TemporaryItems .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-03 인 파일을 삭제하십시오 (다른 것)
단순하게 유지
sudo
어떻게 rm
작동하는지에 대한 정보를 제공하지 않습니다 .