개별 폴더에 구조화 된 많은 rar 아카이브가 있으며이 파일을 모두 풀어서 스크립트를 작성하고 싶습니다.파일 찾기 및 명령 실행
어떻게해야하는지 알아내는 데 어려움을 겪고 있으며 도움이 필요합니다.
#!/bin/bash
## For all inodes
for i in pwd; do
## If it's a directory
if [ -d "$i" ] then
cd $i
## Find ".rar" file
for [f in *.rar]; do
./bin/unrar x "$f" # Run unrar command on filename
cd ..
done
done
done
나는 bash 스크립팅에 익숙하지 않아 코드가 두 번 이상 잘못되었다고 가정합니다.
find -name '*.rar' -exec unrar x {} \;
find
가 발견 된 모든 파일에 해당 명령을 실행할 수있는 옵션 exec
을 제공 :하지만이 기본 구조
'find'는 내가 게시 한 방식으로 너무 많은 열린 파일 오류를 막을 것입니다. 'find foo * ... '와 같이 디렉토리 이름에 glob을 사용했다는 것을 의미합니다. 특정 문제에 대해 질문하십시오. 여기의 질문에 대한 링크를 버리면 나는 거기를 보게 될 것이다. – hek2mgl
문제는 분명히'for ls/var/cpanel/users/';'입니다./var/cpanel/users/*에있는'for i '이어야합니다. – hek2mgl
@Luka 문제는''* .jpg' '입니다. - 따옴표로 묶지 말고,보십시오. 해당 오류를 유발하는 해당 폴더의 모든 jpg 파일로 확장됩니다. 찾으려는 명령은 다음과 같습니다 :'for for i/var/cpanel/users/*; sudo -H -u "$ i" "/ home/$ i/public_html"-type f -name '* .jpg'-execdir jpegoptim {} \을 찾으십시오. ; done' – hek2mgl