我正在尝试将“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
关于如何修复它的任何想法?
答案 0 :(得分:3)
以下变量扩展${file%%}
很奇怪,因为它什么都不做:
$ {parameter %% word}:删除最长匹配的后缀模式。
将文件移动到路径应存在的目录中,以创建路径:
mkdir -p“$(dirname”$ {newfilename}“)”
也许你想要做的事情:
for file in /Volumes/USB_AIB/DICOMFunCurrentBatch/MOVr1unzip/s*/*
do
mv "$file" "${file%/*}/dicom${file##*/}"
done
答案 1 :(得分:2)
我没有dicom/Volumes/USB_AIB/DICOMFunCurrentBatch/MOVr1unzip/s307_1/
的有效路径,为什么在开头添加dicom
?
也许您想将dicom
追加到$file
?
mv "$file" "${file}_dicom"
或类似的东西。