이 질문을 게시하는 과정에서 필자는 코드를 실험 해봤는데 작동하는 것을 생각해 냈지만 불안한 지성은 더 나은 프로그래머가되고 싶습니다. 바로 문제를 해결하기 위해 Script 1.0과 Script 1.1을 게시하여 커뮤니티에 문의하십시오. 3 번 줄을 변경하면 왜 효과가 있습니까?mv를 사용하여 파일 이름 앞에 접두어가 붙습니다.
서버에서 파일을 복사하고 이름을 바꿉니다. 복사가 잘되고 있습니다. 이름 바꾸기는 그렇지 않습니다. 이 파일 이름에는 공백이 있습니다. cp
그들을 유능하게 다루십시오; 것 같습니다. 문제를 해결하기 위해 변수 이름에 ""
을 넣을 것을 기대했지만 여전히 오류가 있습니다 : mv: rename /src/foo.wav to zzz - /dest/foo.wav - copied 201403261800.wav: No such file or directory
. 나는 파일 이름 앞에 "zzz"를 붙이려고 노력하고 있지만 대상 경로 앞에 붙어 있습니다.
cd /src/
DATE=$(date +"%Y%m%d%H%M")
find . -type f -iname "*.wav" | while read file ; do
if [[ "$file" != *zzz* ]]; then
echo "Tranferring...";
cp "$file" /dest/
mv "$file" \zzz\ \-\ "$file"\ \-\ copied\ $DATE.wav
echo "Transfer complete.";
fi
done
이
3 라인이 작동하게 변경 (. if
조건이 내가 이전에 복사하고 이름을 변경 한 것을-복사 다시하지 않도록합니다) : 여기 스크립트 1.0입니다. 하지만 왜? 여기 스크립트 1.1의 : ./passwd
: 당신이 다른 find
명령의 출력을 보면 당신이 find . -type f
이 같은 라인을 반환 것을 볼 수 있습니다
cd /src/
DATE=$(date +"%Y%m%d%H%M")
find *.* -iname "*.wav" | while read file ; do
if [[ "$file" != *zzz* ]]; then
echo "Tranferring...";
cp "$file" /dest/
mv "$file" \zzz\ \-\ "$file"\ \-\ copied\ $DATE.wav
echo "Transfer complete.";
fi
done
이것은 내 질문의 범위를 넘어서서 실제로 도움이되었습니다. 나는 이것을 시험해 보았고 모두 잘 작동한다. 고맙습니다. – Crowder