이 스크립트가 모든 사용자 홈 폴더를 검색한 다음 EXT와 일치하는 rm -f 파일을 검색하도록 하려면 어떻게 해야 합니까? [복사]

이 스크립트가 모든 사용자 홈 폴더를 검색한 다음 EXT와 일치하는 rm -f 파일을 검색하도록 하려면 어떻게 해야 합니까? [복사]

rm -f이 스크립트가 모든 사용자의 홈 폴더를 검색한 다음 EXT와 일치하는 파일을 검색하도록 하려면 어떻게 해야 합니까 ? 이제 스크립트를 실행 중인 현재 폴더에서 EXT와 일치하는 파일을 삭제합니다.

#!/bin/bash
EXT=jpg
for i in *; do
  if [ "${i}" != "${i%.${EXT}}" ];then
    echo "I do something with the file $i"
    rm -f $i
  fi
done

답변1

배쉬를 사용하여글로벌 스타 옵션당신을 위해 재귀적으로:

EXT=csv             ## for example
shopt -s globstar failglob
rm -f /home/**/*."$EXT"

(모든 사용자의 홈 디렉토리가 /home 아래에 있다고 가정합니다). 또한 failglob일치하는 파일이 없으면 rm명령이 실행되지 않도록 설정했습니다 .

보다 일반적으로는 쉘 루프를 사용하여 사용자의 홈 디렉토리를 추출할 수 있습니다.

shopt -s globstar failglob
for homedir in $(getent passwd | awk -F: '$3 >= 500 { print $6 }'|sort -u)
do
  rm -f "$homedir"/**/*."$EXT"
done

이것은 계속 실행됩니다가설공백, 탭 또는 줄 바꿈을 포함하는 사용자 홈 디렉터리가 없습니다.

답변2

테스트하려면:

find /home/ -name '*.txt' -exec ls -l {} \;

실제 삭제:

find /home/ -name '*.txt' -exec rm -f {} \;

물론 "txt"를 필요한 것으로 바꾸십시오.

관련 정보