这不是重复,因为我想在不使用本文https://superuser.com/questions/78434/tool-for-deleting-directories-with-path-names-too-long-for-normal-delete中提到的Windows工具的情况下实现结果
我正在删除Maven创建的SVN忽略文件(类似这样)
jaxb/com.mycompany.test.jaxb.upload-document/target
jaxb/com.mycompany.test.jaxb.fpml/target
jaxb/com.mycompany.test.jaxb.fixml/target
jaxb/com.mycompany.test.jaxb.trade-header/target
jaxb/com.mycompany.test.jaxb.schema-versioning/target
test-risk/target
我使用以下命令,但在Windows上路径太长时失败。
echo "Deleting ignored files"
svn stat --no-ignore | awk '$1=="I" { print $0 }'|awk '{$1=""; print $0}'|tr '\\' '/'|while read file;do rm -rf "$file" ;done;
这是作为在Unix和Windows上运行的脚本的一部分运行的,这就是为什么我不能使用前面提到的任何工具。
我需要做的是编写一个例程,检查由于文件长度过长而导致是否存在任何错误,并使用单个字符递归地将目录从上到下重命名为试图缩短路径。< / p>
我不确定如何检查错误(&#34;目录不为空&#34;和&#34;文件或路径名太长&#34;)。
理想情况下,我想失败&#34; rm -rf&#34;立即而不是数百次抛出错误。
最后,我不确定以递归方式重命名目录的最有效方法是什么。
编辑:如果我只是假设所有目录都会导致问题,我可以依次获取根CD并递归重命名子目录。这样我就不用担心从rm中捕获错误。