find와 동일한 쉘 스크립트에서 while이 작동하지 않는 이유는 무엇입니까? [폐쇄]

find와 동일한 쉘 스크립트에서 while이 작동하지 않는 이유는 무엇입니까? [폐쇄]

10KB보다 큰 모든 파일을 찾아 다른 디렉터리로 이동해야 하는 다음 코드가 있습니다.

read mam
find "$mam" -type f -size +10k > size.txt
while read line
do
    mv "$line" /home/patakinorbert/Desktop/prk1
done < size.txt

답변1

쉘 스크립트가 필요하지 않습니다. 단일 find명령으로 파일을 검색하고 이동합니다.

read -r mam
find "$mam" -type f -size +10k -exec mv {} /home/patakinorbert/Desktop/prk1 \;

-exec과 사이의 단어는 \;발견된 각 파일에 대해 실행되는 명령이며 {}발견된 파일의 이름으로 대체됩니다.

Ubuntu와 같은 Linux 시스템이나 GNU 도구를 사용하는 모든 시스템에서 이 명령의 보다 효율적인 버전은 다음과 같습니다.

read -r mam
find "$mam" -type f -size +10k -exec mv -t /home/patakinorbert/Desktop/prk1 +

이는 한 번의 호출을 사용하여 여러 파일을 이동하기 때문에 더 효율적입니다 mv.

관련 정보