我想对系统中的所有文件执行检查。为此,我需要系统中所有文件的完整路径。我最初的想法是做这样的事情:
for file in $(sudo find / ); do
if [ -d $file ]; then
and so on.
但是后来我读到,以这种方式处理find的输出是不好的做法。那正确的方法是什么?
(我尝试过ls -RF | grep“ / $”之类的操作。但是,这仅给了我目录名称,但我需要系统中每个文件,目录等的完整路径。)
使用find的-exec选项。您的示例脚本将写为:
sudo find / -type d -exec myprog {} \;
{}将被找到的每个文件(在这种情况下为目录)替换。
如果要根据目录还是常规文件或其他内容对每个条目执行不同的操作,则可以将该逻辑放入“ myprog.sh”中,或者只是使用不同的-type选择多次调用find。
编辑:对于单实例脚本选项,将myprog编写为:
#! /bin/bash -
while IFS= read -rd '' FILE; do
if [ -d "$FILE" ]; then
...
done
并致电
find / -print0 | myprog
(如果您不支持-print0
,-exec printf '%s\0' {} +
则替换为)。find
-print0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句