在Linux上移动所有文件,只有一个例外

在Linux上移动所有文件,只有一个例外

简介

如果你在使用Linux,可能有的时候你会想一次复制几个文件,然后再删除其中一些。我们将仔细研究一下实现这种结果的几种不同方法。

重命名不需要的文件

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

/source_dirmv 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/

我们可以用子壳来代替反斜线,用子壳来包围—-。

/source_dirmv(ls -I file5) ~/target_dir/

我们也可以使用命令ls -l unwanted_file | grep -v ‘^d’的输出,将倒置的文件名查询结果转移到目标目录。

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

使用倒置的格雷普搜索

这种技术使用ls来显示源目录的内容,并通过名为 “grep “的命令行工具进行管道连接。grape命令使用不需要的文件作为其索引来显示所有其他文件。逆向思维包围并评估这整个管道。之后,mv命令将反勾包围的操作中的文件名移到目标目录中。

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

作为反斜线的替代方法,我们可以用子壳来包围—-。

/source_dirmv(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/

作为反斜线的替代方法,我们可以用子壳来包围—-。

 /source_dirmv(echo * | sed s:file5::g) ~/target_dir/

你也可以用xargs在xargs和mv之间加入大括号({})来通过管道运行sed命令。你需要扩展该字符串,以便mv能够评估它。大括号(brackets)是用来评估新内容的。

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

结论

我们已经介绍了几种将文件从一个位置复制到另一个位置的方法,但也有一些例外。一开始,我们采取了字面的方法,在一个不可见的文本文件中重命名不需要的文件。后来,我们检查了使用感叹词和关怀词来确定不需要的文件。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Linux 基础