让多个目录包含类似的文件名。我想重命名文件并附加目录名作为filename的扩展名。这是一个例子:
dir1
file1
file2
file3
dir2
file1
file2
file3
我目前正在做的是在每个目录中运行以下内容以批量重命名。
$> cd dir1
$> for f in *; do mv "$f" "$f.dir1"; done
$> ls
$> file1.dir1 file2.dir1 file3.dir1
$> cd ../dir2
$> for f in *; do mv "$f" "$f.dir2"; done
$> ls
$> file1.dir2 file2.dir2 file3.dir2
但是这变得多余了,我想知道是否有一种方法可以自动执行,并且同时从父目录到两者都执行dir1和dir2。可以找到一个有点相关的问题here;但是我可能需要一段时间来理解并将其移植到我的平台上,因为我几乎不会编写ms窗口脚本。
感谢您的帮助。
答案 0 :(得分:1)
您可以在父目录中使用它:
find -maxdepth 1 -type d -name 'dir*' -exec bash -c \
'for file in "${1}"/* ; do
echo -v "${file}" "${file}"."$(basename "${1}")"
done' -- {} \;
将echo
替换为mv
,如果它适合您。
答案 1 :(得分:1)
您可以像这样修改脚本:
for d in *; do
if [ -d $d ] ; then
cd $d;
for f in *; do
mv "$f" "$f.$d";
done
cd ..;
fi
done
从父目录中,您可以执行它。