我正在尝试编写一个简单的脚本,该脚本将查找文件中的字段是否为空,例如x_Field="
find /mnt/sdb1/*/*/ -name 'files.txt' -type f -follow -print0 {} ; | xargs -0 grep -o -P '(?<=x_Field).*(?=y_Field)' | cut -c 3 | awk '{sub(/..$/,"")}1'
我认为命令在没有find的情况下有效,但在有find的时候无效?
grep -o -P '(?<=x_Field).*(?=y_Field)' | cut -c 3 | awk '{sub(/..$/,"")}1'
此外,当我得到这一半工作,如果我似乎有太多的文件要扫描,所以它给了一个增加太长:-(
很抱歉还要补充一点,我需要浏览数百个子文件夹,因此我使用通配符
find
命令有许多错误。
显然,/mnt/sdb1/*/*
扩展为一个列表,该列表对于您的shell来说太长了。您可以将其替换为/mnt/sdb1 -mindepth 2
(假设您希望避免在sdb1
正下方的目录中找到任何内容)。
如果您有-exec
选项,那么{} ;
会很有用,但您没有。
此外,grep | cut | awk
可能可以重构为一个单独的Awk脚本,但如果不正确理解它应该实现什么,就很难编写替代脚本。