Linux——将文件夹内所有同种类型文件移入到另一个文件夹中
Linux中一切皆文件
由于工作需要,我需要把一个文件目录A中所有的普通文件移动到另一个目录中,但是问题是,这个文件目录A中有各种类型的文件(目录文件,链接文件等),如何用shell命令实现我的需求呢?本文涉及到awk
,ls
,$()
的使用。
由于工作需要,我需要把一个文件目录A中所有的普通文件移动到另一个目录中,但是问题是,这个文件目录A中有各种类型的文件(目录文件,链接文件等),如何用shell命令实现我的需求呢?
简化需求,如下图,需要将test文件夹中test1,test2,test3文件移入到test4文件夹中,为了方便起见以test命令,实际可能为没有规则的文件名
- 找到test文件夹中所有文件
- 将其移动到test4文件
如何找到文件夹中所有文件
ls -l +管道符配合grep查看当前目录下某种类型的文件
- 使用ls -l显示文件夹中文件的长格式,第一个字符为文件类型
- ^表示第一个字符,$表示最后一个字符,可以使用通配符来做筛选
-
这个方法也可以比较通用,也可以查看当前文件夹中全部目录,全部块文件,全部链接
在shell中ls -F是一个很有用的命令:把文件按照类型归类,主要区分目录文件、可执行文件、链接文件,并且在末尾加上 / 、*、@符号标识
# 查看当前目录下可执行文件 # 查看当前目录下目录文件 # 查看当前目录下符号链接文件 # 查看当前目录下普通文件
如何把找到的文件移动到目标目录内
-
需要把上一步找到的文件作为SOURCE
使用awk
从长格式中得到所需文件的文件名
对于2,我们在如何找到文件夹中所有文件中的得到的是长格式的内容,因此可以使用awk
命令来找到对应的文件。
使用$()或者``做命令替换
-
在bash中,
$( )
与``
(反引号)都是用来作命令替换的。
-
命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。
- 因此,我们可以使用
$( )
与``
来做命令替换后得到结果作为mv的SOURCE
# 移动文件至test4文件目录中 # 查看到之前的文件已经移动到了test目录中
我们在快速记录的时候经常会使用到TXT这个简单的记录工具,因为它的格式简单,只记录文字,体积小,易打开也易保存,同时也不容易中病毒。但是当我们每次都打开一份新的TXT来记录的话,长久以往,电脑中的TXT就堆积如山了。如果把同一类的TXT合并成为一篇TXT就会清楚多了。
1、将需要合并的txt文本文档放在同一个文件夹中,倘若合并有顺序要求,请将txt文本文档进行重命名,使文档按照顺序排列。
接着对文件夹进行重命名,尽量将文件名设置为英文或拼音格式,方便命令输入。素材文件将文件夹重命名为“merge”。
文件夹重命名完成后,将文件夹移动至磁盘的根目录中,方便命令输入。
2、同时按下Win + R键打开运行窗口,在打开文本框中输入“cmd”后,按Enter键打开命令提示符窗口。
在命令提示符窗口中先输入命令“ D:”,按Enter键进入D盘的根目录中。
接着再次输入命令“cd merge”,按Enter键进入“merge”文件夹中。
3、确认文件目录正确后,接下来就是通过命令快速合并txt文本文档。
在命令提示符窗口中输入命令“type *.txt 》》D:\merge.txt”,按Enter键开始合并txt文本文档。“D:\”表示将合并后的文件输出到D盘。“merge.txt”表示将合并后的文本文档重命名为“merge.txt”。
请根据个人需要进行设置。