2

我正在尝试将单词“dicom”附加到一组文件夹中许多文件名的前面。这些文件夹都以“s”开头(在下面的脚本中用“s*”表示),每个文件夹都包含许多文件(下面用“*”指定)——我希望所有这些文件都可以使用这个来更改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

关于如何解决它的任何想法?

4

2 回答 2

3

我没有有效的路径 as dicom/Volumes/USB_AIB/DICOMFunCurrentBatch/MOVr1unzip/s307_1/,为什么要dicom在开头添加?

也许您想附加dicom$file?

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

或类似的东西。

于 2013-09-30T20:27:03.160 回答
3
  1. 以下变量扩展${file%%}很奇怪,因为它什么都不做:

    ${parameter%%word} :删除最长匹配的后缀模式。

  2. 将文件移动到路径应该存在的目录中,创建路径:

    mkdir -p "$(dirname "${newfilename}")"

也许你正在尝试做的事情:

for file in /Volumes/USB_AIB/DICOMFunCurrentBatch/MOVr1unzip/s*/*
do
    mv "$file" "${file%/*}/dicom${file##*/}"
done
于 2013-09-30T20:31:55.190 回答