2013-09-30 50 views
1

我試圖將詞「dicom」附加到一組文件夾中的許多文件名的前面。這些文件夾全部以「s」開始(在下面的腳本中由「s *」引用),並且每個文件夾都包含許多文件(由下面的「*」指定) - 我希望所有這些文件都可以使用這個bash腳本。我試圖運行這個命令:bash腳本將文字附加到文字

for file in /Volumes/USB_AIB/DICOMFunCurrentBatch/MOVr1unzip/s*/* 
    do 
    mv $file dicom${file%%} 
done 

卻得到了千元以下錯誤的行(一次爲每個文件夾中的每個文件 - 這只是其中的一個例子):

mv: rename /Volumes/USB_AIB/DICOMFunCurrentBatch/MOVr1unzip/s307_1/29217684 to dicom/Volumes/USB_AIB/DICOMFunCurrentBatch/MOVr1unzip/s307_1/29217684: No such file or directory 

任何想法如何解決它?

回答

3
  1. 以下變量擴展${file%%}很奇怪,因爲它什麼都不做:

    $ {參數%%詞}:刪除最長匹配的後綴模式。

  2. 將文件移動到一個目錄中應該存在的路徑,創建路徑:

    的mkdir -p 「$(目錄名稱 」$ {} newfilename「)」

也許什麼你正在嘗試做:

for file in /Volumes/USB_AIB/DICOMFunCurrentBatch/MOVr1unzip/s*/* 
do 
    mv "$file" "${file%/*}/dicom${file##*/}" 
done 
+0

這就是它,謝謝! – victoriaklimaj

2

我沒有一個有效的路徑爲dicom/Volumes/USB_AIB/DICOMFunCurrentBatch/MOVr1unzip/s307_1/,爲什麼在開始時添加dicom

也許你想追加dicom$file的結尾?

mv "$file" "${file}_dicom" 

或類似的東西。

+0

需要附加到文件名。謝謝 – fayyazkl