Shell 脚本:使用新名称复制文件夹

Shell 脚本:使用新名称复制文件夹

我正在尝试编写此 shell 脚本,以在父目录中创建当前目录中找到的文件夹的副本。到目前为止,我写了以下内容:

for folder in *; do

    mkdir ../$folder;
done

我想对文件夹名称执行“查找和替换”操作,例如,名为的文件夹graphics-HD将被复制为graphics-SD

抱歉,如果它过于简单,但我绝对没有使用 shell 脚本/unix 的经验。

非常感谢!J.

答案1

在通配符后面添加斜杠可将输出限制为目录

for dir in */; do ...

你可能想阅读bash 参数扩展——您可以在 shell 中执行查找和替换:

newname=${dir/%-HD/-SD}

答案2

您所拥有的没有任何问题,只是它会将文件和文件夹都创建成文件夹。您可以使用 [ -d $folder ] 检查每个文件夹是否都是目录,或者使用 find。从您要复制文件夹的文件夹中:

find -type d -maxdepth 1 -exec mkdir "../{}" \+ 

要搜索和替换,请重命名重命名.berlios.de。您可以将所有文件夹重命名为以下位置:

renamexm -s/-HD/-SD/ `find . -type d -maxdepth 1`

相关内容