如何在Unix终端中重命名所有子文件夹中的多个目录
如何在Unix终端中重命名所有子文件夹中的多个目录
我有一个名为Experiment的主目录,在其中我保存了几个子文件夹,例如time_data,然后有几个子文件夹bacterial_strain,最后是drug concentration,写作\"0,5 mM\"。因此,最终路径为:
/Experiment/time_data/bacterial_strain/0,5 mM
我想将所有子目录中的目录名称从\"0,5 mM\"更名为\"0,7 mM\"
我已经尝试运行了几个不同的管道流程,例如:
find . -type d | grep 0,5 | mv "0,5 mM/" "0,7 mM/"
或者
grep -r "0,5 mM" "/path_to_Experiment_folder" | mv 0,5\ mM 0,7\ mM
但终端都会给出同样的错误:
mv: rename 0,5 mM to 0,7 mM: No such file or directory
请问,如何更改管道流程以实现此操作?
admin 更改状态以发布 2023年5月21日
你可以尝试类似这样的操作:
find . -depth -type d -name "0,5mM*" -exec mv {} Experiment/time_data/bacterial_strain/drug_concentration/0,7mM \;
值得注意的事项:
- 我注意到你的最后一个子文件夹名称包含空格
0,5 mM
。对于带有空格的find
命令和使用-exec mv
命令的执行无效,我不确定是为什么。为了测试目的,我删除了空格字符,上面的命令有效,并且它是一条单行命令,我只是为了可见性而将其分开,我相信这将被找出来,但尽管如此;)。 - 我使用了整个路径来重命名最后一个文件
0,5mM
。我假设所有的目录深度都相同,如果不是,则可能需要进一步探索-depth
选项。 - 如果您有不同深度的目录或不同的名称需要重命名,则还可以将上述命令封装在脚本中,并在父目录上运行它。
希望这对你有用。