我可以使用类似以下方法找到文件列表:
find /path/to/files -type f
我可以使用以下任一方法清除单个文件的内容:
> filename
echo -n > filename
cat /dev/null > filename
您可以使用不涉及输出重定向的命令执行类似的操作:
find /path/to/files -type f -exec file '{}' \;
然而这不起作用:
find /path/to/files -type f -exec echo -n > '{}' \;
我似乎无法使用 find 命令-exec
或| xargs
将文件列表导入到这些命令之一中来清除文件。我该怎么做?
答案1
find /path/to/files -type f -exec /bin/sh -c "> '{}'" ';'
应该做你想做的事;参见查找(1)有关 exec 如何工作的详细信息,但此调用运行一次命令,并将文件名放在其中{}
。
您还可以告诉 xargs 仅将单个文件名传递给命令,或者find /path -type f | while read file; do echo -n > "$file"; done
在 shell 级别执行此操作。
答案2
只是为了好玩,这里还有另一种选择:
find /path/to/files -type f -exec dd if=/dev/null of={} \;