我正在尝试的命令(因为我正在尝试查找以“butterflyinmotion.com”作为目录的 tars)是:
find / -name "*.tar.gz" -exec tar -tzf {} \; | grep -W butterflyinmotion
这显示了很多错误并且不起作用。 grep -W 是必要的,这样我就知道butterflyinmotion.com 备份在哪个文件中。谢谢!
答案1
我认为制作一个小脚本并使用find -exec
.
例如:
#!/bin/sh 回声>>> $1” tar tvf“$1”
使用 -exec ./script.sh "{}" \; 调用它并将结果重定向到文件,然后 grep 该文件egrep '>>>|WhatYouLookFor' file
您还可以在脚本中使用 grep :
#!/bin/sh 回声>>> $1” tar tvf“$1”| grep '你寻找什么'
或者更灵活:
#!/bin/sh 回声>>> $2” tar tvf“$2”|查找“$1”
使用 -exec ./script.sh 'WhatYouLookFor' "{}" \; 调用它
答案2
至少使用 GNU grep,你可以这样做:
find / -name '*.tar.gz' -exec sh -c '
for t; do
tar -tvf "$t" | grep -m1 -l --label="$t" "butterflyinmotion"
done
' {} + 2>/dev/null
.tar.gz
这将输出其档案中至少包含该模式的一个匹配项的文件的名称butterflyinmotion
使用 GNU tar,似乎可以(至少对于简单模式)省略 grep 并tar -tf
直接使用 ex 的退出状态。
find / -name '*.tar.gz' -exec tar --wildcards -tf {} '*butterflyinmotion' \; -print 2>/dev/null
上面将打印匹配的文件(如果有),后跟存档的名称。