我正在尝试编写此 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`