需要使用特定字母 grep 文件并移动到另一个文件夹 Linux

nar*_*yan 3 command-line grep filenames

我需要选择名称中包含“错误”或“流量”的文件,例如

abc_ERRor.csv
raError.csv
bsn_Error.csv
bbbctraffic.csv
ccc_traffic.csv
...
Run Code Online (Sandbox Code Playgroud)

并将其移动到相应的目录,如Error_directorytraffic_directory根据他们的名字。

我试过这个,但没有用

mv $(ls test_file | grep -l 'Error>' *) Error_directory
Run Code Online (Sandbox Code Playgroud)

如何从命令行执行此操作?

ls test_file | grep 'Error'
Run Code Online (Sandbox Code Playgroud)

toj*_*son 6

ls由于文件名中可能出现的字符范围很广,因此解析 的输出很少是一个好主意。更好的解决方案可能是:

find ./test_file -iname "*error*" -print0 | xargs -0 -I {} mv {} Error_directory
Run Code Online (Sandbox Code Playgroud)

注意-iname选项。这将返回不区分大小写的匹配,允许您查找和移动文件,例如:

abc_ERRor.csv
error_123.csv
ErRoR_77.csv
Run Code Online (Sandbox Code Playgroud)

如果您不需要不区分大小写的搜索,那么简单的事情就足够了:

mv test_file/*Error* Error_directory
Run Code Online (Sandbox Code Playgroud)

进一步阅读:

xargs 分隔符问题

bash 陷阱