添加目录名称作为文件扩展名

Add name of directory as file name extension

有多个包含相似文件名的目录。我想重命名文件并将目录名附加为文件名的扩展名。这是一个例子:

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 window 脚本。

感谢您的帮助。

您可以从父目录使用它:

find -maxdepth 1 -type d -name 'dir*' -exec bash -c \
'for file in ""/* ; do
     echo -v "${file}" "${file}"."$(basename "")"
 done' -- {} \;

如果适合您,请将 echo 替换为 mv

您可以这样修改脚本:

for d in *; do
if [ -d $d ] ; then
    cd $d; 
    for f in *; do  
        mv "$f" "$f.$d"; 
    done 
    cd ..; 
fi
done

从父目录,你可以执行它。