终端命令对不包含文本的文件名进行操作

时间:2016-03-25 01:07:57

标签: unix terminal cp

我的目录中包含名称如下的文件:

file_name_is_001
file_name_001
file_name_is_002
file_name_002
file_name_is_003
file_name_003

我只想复制不包含'is'的文件。我不知道该怎么做。我试图搜索它,但似乎无法谷歌搜索结果的正确短语。

2 个答案:

答案 0 :(得分:2)

详细信息取决于操作系统,shell等。 对于unix系统,一个非常冗长但易于理解的方法可能看起来像这样(请注意我没有测试它):

mkdir some_temporary_directory
mv *_is_* some_temporary_directory
cp * where_ever_you_want_to_copy_it
mv some_temporary_directory/* .
rmdir some_temporary_directory

答案 1 :(得分:2)

您可以使用bash执行此操作。首先,这是一个命令,可以为您提供不包含文本_is_的文件列表:

ls | grep -v "_is_"

这将获取ls的输出,并使用_is_匹配所有不包含grep -v的值。

为了复制这些文件,我们需要将grep输出的行转换为cp的参数。我们可以使用xargs

执行此操作

ls | grep -v "_is_" | xargs -J % cp % new_folder

xargs手册页中,它是一个工具,用于从标准输入"构建和执行命令行。