我正在使用csh,并且我有一个包含多个子目录的目录结构。我正在尝试重命名所有目录和子目录,而不是重命名这些目录中的文件。所以像
从
topdir1
--dir11
--dir12
topdir2
--dir21
----dir211
--dir22
到
topdir1.test
--dir11.test
--dir12.test
topdir2.test
--dir21.test
----dir211.test
--dir22.test
我可以使用find列出目录。-maxdepth 3型d。我正在尝试使用一个foreach循环来重命名它们。所以
foreach i (`find . -maxdepth 3 -type d`)
mv $i $i.test
end
但这无法工作,因为一旦重命名了顶级目录,它就找不到子目录,因此它仅重命名了顶级目录。
关于如何解决这个问题的任何想法?
谢谢
如何反转查找结果,以便首先列出子目录?
foreach i (`find ./* -maxdepth 3 -type d | sort -r`)
mv $i $i.test
end
排序将最后输出最长的目录名称,使用-r(反向)标志对其进行更改,以便最低的目录将首先列出,并在其父目录之前重命名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句