我有一个巨大的包含日志文件的目录,并且想要移动其中包含特定“短语”的文件。
IE
log1.csv ------ containing word "xzy"
log2.csv ------ containing word "abc"
log3.csv ------ containing word "xzy"
..
log1000.csv ------ containing word "123"
现在我想移动(或复制)所有*.csv
内容到新目录
最好的解决方案是什么?
答案1
find
和grep
:
find /dir/ -type f -name 'log*.csv' -exec grep -q 'xyz' {} \; -exec mv -t /target/ {} \;
find /dir/ -type f -name 'log*.csv'
查找log<anything>.csv
目录内的所有文件/dir
-exec grep -q 'xyz' {} \;
在每个找到的文件上运行grep
以匹配正则表达式模式xyz
-exec mv -t /target/ {} \;
将匹配的文件(基于退出状态grep
;成功(0
)表示匹配)从上一步移动到目标目录/target