~application/x-trash 디렉토리와 그 하위 디렉토리에 있는 파일을 확인하는 간단한 bash 스크립트가 있습니다.
잘 작동하지만 에코가 비어 있습니다..~또한 이것은 무해해 보이지만 짜증나는 일입니다. 이것을 어떻게 피할 수 있습니까?
스크립트
#!/bin/sh
cd '/var/www/html/mypath/'
for d in $(find '/var/www/html/mypath/' -maxdepth 6 -type d)
do
echo $d
for f in $d'/'*.*~;
do FILE=$f;
echo 'file to be removed: '$FILE
done
done
하위 디렉터리 dir의 경우 dir에 ~ 파일이 없으면 터미널에 다음이 표시됩니다.
삭제할 파일:/var/www/html/mypath/../../../dir/*.*~
답변1
*~
이름이 일치하는 파일 .*~
(보통 편집자가 남겨둔 백업 파일) 을 찾고 싶다고 가정하면 다음 단일 find
호출로 해당 작업이 수행됩니다.
find /var/www/html/mypath/ -type f \( -name '*~' -o -name '.*~' \) -print
-maxdepth 6
타당하다고 생각되면 다음을 삽입할 수 있습니다.
find /var/www/html/mypath/ -maxdepth 6 -type f \( -name '*~' -o -name '.*~' \) -print
발견된 파일을 삭제하려면 -delete
명령 끝에 추가하면 됩니다.
쉘이 파일 이름 와일드카드 패턴을 이름 목록으로 확장할 수 없으면 확장되지 않은 상태로 유지됩니다. 이것이 바로 코드가 얻는 결과를 얻는 이유입니다.
답변2
다음은 내 요구 사항을 충족합니다.
#!/bin/sh
cd '/var/www/html/mypath/'
for i in `find '/var/www/html/mypath/' \( -name '*~' -o -name '.*~' \) -type f`; do
echo 'file to be removed: '$i
mv $i '/var/www/html/trashTest'
done