![이 스크립트가 모든 사용자 홈 폴더를 검색한 다음 EXT와 일치하는 rm -f 파일을 검색하도록 하려면 어떻게 해야 합니까? [복사]](https://linux55.com/image/125609/%EC%9D%B4%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EA%B0%80%20%EB%AA%A8%EB%93%A0%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%ED%99%88%20%ED%8F%B4%EB%8D%94%EB%A5%BC%20%EA%B2%80%EC%83%89%ED%95%9C%20%EB%8B%A4%EC%9D%8C%20EXT%EC%99%80%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20rm%20-f%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EA%B2%80%EC%83%89%ED%95%98%EB%8F%84%EB%A1%9D%20%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
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"를 필요한 것으로 바꾸십시오.