有兩個目錄,一個包含XML,一個包含二進制文件(jpg和mp4)。我需要腳本來檢查這兩個目錄,如果* .jpg,* .mp4和* .xml與文件名完全匹配 - 那麼腳本需要將具有匹配名稱的所有匹配文件移動到新目錄。匹配沒有擴展名的文件名,並將它們移動到新目錄(如果找到匹配) - Bash
#!/bin/bash
#File Origin
xmlDump='/Volumes/VoigtKampff/Temp/TEST2/xmlDump'
binaryDump='/Volumes/VoigtKampff/Temp/TEST2/binaryDump'
Dest01='/Volumes/VoigtKampff/Temp/TEST1/destination'
TopLevel='/Volumes/VoigtKampff/Temp/TEST2'
cd $TopLevel
for file in `find . -type f -name "*.xml" -or -name "*.jpg" -or -name "*.mp4"`
do
echo $file
if [ -f $file ] ; then
baseName=${file%\.*}
if [ $baseName=${file%\.*} ] ; then
echo $baseName
echo "success"
mv -v $baseName $Dest01
fi
fi
done
但我遇到的問題是mv文件到目的地目錄。所以目前我得到的錯誤是它試圖在不擴展到目標目錄的情況下製作文件。
MV:重命名./xmlDump/test_002到/卷/ VoigtKampff /溫度/ TEST1 /目的/ test_002:沒有這樣的文件或目錄 MV:重命名./xmlDump/test_001到/卷/ VoigtKampff /溫度/ TEST1 /目的地/ test_001:沒有這樣的文件或目錄 MV:重命名./binaryDump/test_003到/卷/ VoigtKampff /溫度/ TEST1 /目的/ test_003:
你如何獲得的bash腳本只沒有這樣的文件或目錄將具有匹配文件名(不包括擴展名)的文件移動到目標目錄?
目標目錄是否存在? – 2012-03-12 13:51:30
是的目標目錄存在 - 我嘗試使用「mv -v $ file $ Dest01」,並且所有文件都被移動到目標目錄 – JRM 2012-03-12 13:53:30
但是,您嘗試使用擴展名剝離的文件名稱來調用mv。可能沒有這樣的文件,我想這是導致錯誤的原因。所以,如果你有try.jpg你嘗試執行'mv -v try〜/ dest'並且沒有文件temp。 – 2012-03-12 13:58:37