我想删除所有包含特定字词的文件,例如“汽车”。 到目前为止,我想出了这个:
find|grep car
如何将输出传递给rm?
答案 0 :(得分:77)
find . -name '*car*' -exec rm -f {} \;
或将管道输出传递给xargs
:
find | grep car | xargs rm -f
请注意,这些是非常钝的工具,您可能会删除不打算删除的文件。此外,这里没有努力处理包含空格(包括换行符)或前导破折号等字符的文件。被警告。
答案 1 :(得分:9)
要查看您要删除的内容,因为rm -fr
是危险的命令:
find /path/to/file/ | grep car | xargs ls -lh
然后,如果结果符合您的要求,请删除ls -lh
并将其替换为rm -fr
find /path/to/file/ | grep car | xargs rm -fr
答案 2 :(得分:4)
我喜欢用
rm -rf $(find . | grep car)
它完全按照您的要求运行rm -rf
,以grep car
从find .
的输出返回Length = input(10, minval=1)
xHL2 = hl2
xMaxH = highest(xHL2, Length)
xMinL = lowest(xHL2,Length)
nValue1 = 0.33 * 2 * ((xHL2 - xMinL) / (xMaxH - xMinL) - 0.5) + 0.67 * nz(nValue1[1])
nValue2 = iff(nValue1 > .99, .999,
iff(nValue1 < -.99, -.999, nValue1))
nFish = 0.5 * log((1 + nValue2) / (1 - nValue2)) + 0.5 * nz(nFish[1])
pos = iff(nFish > nz(nFish[1]), 1,
iff(nFish < nz(nFish[1]), -1, nz(pos[1], 0)))
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(nFish, color=green, title="Fisher")
plot(nz(nFish[1]), color=red, title="Trigger")
,这是递归的每个文件和文件夹的列表。
答案 3 :(得分:2)
您确实希望将find
与-print0
和rm
与--
一起使用:
find [dir] [options] -print0 | grep --null-data [pattern] | xargs -0 rm --
一个具体示例(删除当前目录下包含car的文件名下的所有文件):
find . -print0 | grep --null-data car | xargs -0 rm --
为什么这是必要的:
-print0
,--null-data
和-0
将输入/输出的处理从解析为由空格分隔的标记更改为解析为由\0
- 字符分隔的标记。这允许处理异常文件名(有关详细信息,请参阅man find
)rm --
确保实际删除以-
开头的文件,而不是将其视为rm
的参数。如果存在名为-rf
且执行find . -print0 | grep --null-data r | xargs -0 rm
的文件,则可能不会删除文件-rf
,但会更改rm对其他文件的行为。答案 4 :(得分:2)
这会找到一个匹配模式(* .xml)的文件,并将其内容grery用于匹配字符串(exclude =&#34; 1&#34;),如果找到匹配项,则删除该文件。
find . -type f -name "*.xml" -exec grep exclude=\"1\" {} \; -exec rm {} \;
答案 5 :(得分:1)
有点神秘,但你也可以使用find,grep和xargs
find . -type f | grep -e "pattern1" -e "pattern2" | xargs rm -rf
^ Find需要注意使其能够满足您的需求,例如文件,mindepth,maxdepth和任何通配。
答案 6 :(得分:0)
find start_dir -iname \*car\* -exec rm -v {} \;
答案 7 :(得分:0)
您可以使用ls和grep查找文件,并使用rm -rf删除文件。
rm -rf $(ls | grep car)
但这不是一个好主意,如果有目录或文件的可能性,并且您不想删除,并且具有使用grep指定的字符模式的名称。
答案 8 :(得分:0)
find | grep car | xargs rm -f
获得结果时:
/path/to/car
/path/to/car copy
某些包含空格的文件不会被删除。
所以我的答案是:
find | grep car | while read -r line ; do
rm -rf "${line}"
done
因此可以删除包含空格的文件。
答案 9 :(得分:0)
rm 和通配符一起使用 * rm * 将删除所有文件 rm *.ext 将删除所有扩展名为 ext 的文件 rm word* 将删除所有以 word 开头的文件。