Linux系统中移动除一个文件外的所有文件


引言

如果您使用Linux,有时您可能需要一次复制多个文件,然后稍后删除其中一些文件。我们将仔细研究几种实现此类结果的不同方法。

重命名不需要的文件

您可以重命名不需要的文件,使其成为“.”(点)文件,这意味着隐藏文件,这意味着mv无法看到它。使用星号重命名不需要的文件后,我们将使用正则表达式删除其余文件。

/source_dir$ mv file5 .file5
/source_dir$ mv * ~/target_dir/
/source_dir$ ls -la
total 0
drwxrwxr-x  2 ubuntu ubuntu  60 Jun 10 03:42 .
drwxr-xr-x 21 ubuntu ubuntu 520 Jun 10 03:25 ..
-rw-rw-r--  1 ubuntu ubuntu   0 Jun 10 00:57 .file5

移动文件后,我们现在可以将隐藏文件重命名回其原始文件名。

/source_dir$ mv .file5 file5

使用感叹号否定格式

第二种方法涉及使用感叹号 (!) 作为不需要的文件名前缀,并将其括在括号中。这告诉操作系统查找除指定文件以外的任何其他文件。

$ mv SOURCE_DIRECTORY/!(unwanted_filename) TARGET_DIRECTORY

我们首先需要运行 shopt -s 命令来设置我们的 ~/.bashrc 配置文件。这告诉 Linux 在命令中使用路径时展开路径。

$ set shopt -s extglob .bashrc
$ mv source_dir/!(file5) target_dir/

使用反向 ls 搜索

要从我们的系统中删除不需要的文件,我们只需使用带有 -I 选项的 ls 命令。此命令显示除您指定的文件之外的所有其他文件。此命令语句在封闭的反引号命令中执行。mV 命令将封闭操作的结果移动到目标目录(或文件)中。

/source_dir$ mv `ls -I file5` ~/target_dir/

除了反引号外,我们还可以使用子shell进行封闭。

/source_dir$ mv $(ls -I file5) ~/target_dir/

我们还可以使用命令 ls -l unwanted_file | grep -v '^d' 的输出将反向文件名查询的结果传输到目标目录。

/source_dir$ ls -I file5 | xargs -i mv {} ~/target_dir/

使用反向 grep 搜索

此技术使用 ls 显示源目录的内容,并将其通过名为“grep”的命令行工具进行管道传输。grape 命令使用不需要的文件作为其索引来显示所有其他文件。反引号封闭并评估整个管道。之后,mv 命令将反引号封闭操作的文件名移动到目标目录。

/source_dir$ mv `ls | grep -v file5` ~/target_dir/

作为反引号的替代方法,我们可以使用子shell进行封闭。

/source_dir$ mv $(ls | grep -v file5) ~/target_dir/

您还可以将 grep -v 'invert' 的输出通过管道传输到 xargs -i 命令,该命令将反向搜索的结果移动到目标文件夹。

/source_dir$ ls | grep -v file5 | xargs -i mv {} ~/target_dir

使用 sed 搜索和替换

要从大量文件中删除特定不需要的文本字符串,请使用反引号 (`) 括起 sed 命令,该命令搜索不需要的文本,然后将该搜索的输出通过管道传输到另一个 sed 命令,该命令删除不需要的文本。之后,mv 命令将列出的文件结果移动到目标目录。

/source_dir$ mv `echo * | sed s:file5::g` ~/target_dir/

作为反引号的替代方法,我们可以使用子shell进行封闭。

 /source_dir$ mv $(echo * | sed s:file5::g) ~/target_dir/

您还可以使用 xargs 通过管道运行 sed 命令,方法是在 xargs 和 mv 之间包含花括号 ({})。您需要扩展该字符串,以便 mv 可以对其进行评估。花括号(括号)用于评估新内容。

/source_dir$ echo * | sed s:file5::g | xargs -i {} mv {} ~/target_dir/

结论

我们已经介绍了几种将文件从一个位置复制到另一个位置的方法,但有一些例外。一开始,我们采用了一种字面上的方法,并将不需要的文件重命名为不可见的文本文档。稍后,我们检查了使用感叹号和插入符号来确定不需要的文件。

更新于:2023年1月3日

4K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告