Tom Wright Asked: 2009-06-11 04:24:38 +0800 CST2009-06-11 04:24:38 +0800 CST 2009-06-11 04:24:38 +0800 CST 按文件名删除所有文件(Linux 单行) 772 CakePHP 有一个约定,将名为“empty”的文件放在空目录中。我敢肯定他们是有原因的,但这真的让我很烦恼。(是的,强迫症,我知道……) 我想要一个单行 linux shell 命令,它将删除每个后代目录中名为“empty”的每个文件。(我想能够为更一般的用途指定通配符也会很有用。) 有任何想法吗? linux scripting cakephp 4 个回答 Voted Best Answer skraggy 2009-06-11T04:28:37+08:002009-06-11T04:28:37+08:00 最简单的是: 寻找 。-name 空 -type f -exec rm -f {} \; “。” 从当前目录开始,如果要在另一个位置执行它,请替换为目录路径。 “-type f”只是确保它是一个文件。 Server Horror 2009-06-11T05:26:28+08:002009-06-11T05:26:28+08:00 简短的摘要: 有多种选择: find . -name empty -type f -exec rm -f {} \; rm将为每个文件调用一次 find . -name empty -type f -exec rm -f {} + 将rm通过构建使用最大长度的命令行来尽可能频繁地调用 find . -name empty -type f | xargs rm -f 与上面相同,您可能(或者更确切地说,如上所述 - 这是我的方法)遇到包含需要引用的字符的文件名问题 find -name empty -type f -print0 | xargs -0 rm -f 可能是最好的解决方案请支持 Dan C 的评论,这是他的解决方案。它将作为前面的代码片段调用rm,只在需要时通过构造一个使用最大长度的命令行来调用,这个-0开关意味着rm命令的参数将被分隔,\0以便在 shell 中完成转义。 关于通过使用进行限制的注释的附带说明,-type f您也可以使用-size 0(精确为 0 字节)进行限制源存储库就是这样做的。 此外,正如 Matt Simons 指出的那样,添加-v标志可能是查看一些进展的不错选择,但请注意,这肯定会减慢整个过程。更好的方法可能是通过使用来跟踪该过程strace -p $pid_of_xargs(如果您想跟踪子进程,请添加其他选项,afaik 这是可能的) 我刚刚在手册页中找到的另一个注释: find -name empty -type f -delete 毕竟 find 具有所有内置功能:) Heinrich Filter 2009-06-11T04:38:11+08:002009-06-11T04:38:11+08:00 cakePHP 这样做的一个可能原因是某些版本控制系统(例如 Mercurial 和 Git)无法跟踪空目录。 Berzemus 2009-06-11T04:27:12+08:002009-06-11T04:27:12+08:00 这可能会: rm -f $(find /var/www -name empty -print) 默认情况下查找递归。
最简单的是:
寻找 。-name 空 -type f -exec rm -f {} \;
“。” 从当前目录开始,如果要在另一个位置执行它,请替换为目录路径。
“-type f”只是确保它是一个文件。
简短的摘要:
有多种选择:
rm
将为每个文件调用一次将
rm
通过构建使用最大长度的命令行来尽可能频繁地调用与上面相同,您可能(或者更确切地说,如上所述 - 这是我的方法)遇到包含需要引用的字符的文件名问题
可能是最好的解决方案请支持 Dan C 的评论,这是他的解决方案。它将作为前面的代码片段调用
rm
,只在需要时通过构造一个使用最大长度的命令行来调用,这个-0
开关意味着rm
命令的参数将被分隔,\0
以便在 shell 中完成转义。关于通过使用进行限制的注释的附带说明,
-type f
您也可以使用-size 0
(精确为 0 字节)进行限制源存储库就是这样做的。此外,正如 Matt Simons 指出的那样,添加
-v
标志可能是查看一些进展的不错选择,但请注意,这肯定会减慢整个过程。更好的方法可能是通过使用来跟踪该过程strace -p $pid_of_xargs
(如果您想跟踪子进程,请添加其他选项,afaik 这是可能的)我刚刚在手册页中找到的另一个注释:
毕竟 find 具有所有内置功能:)
cakePHP 这样做的一个可能原因是某些版本控制系统(例如 Mercurial 和 Git)无法跟踪空目录。
这可能会:
默认情况下查找递归。