2013-09-30 24 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