文件目录类命令
文件目录类命令
Linux 中一切皆文件,所以跟文件相关的操作需要重点理解和掌握
Windows 和 Linux 文件系统的一些区别
-
Windows 中,同级下,目录和文件夹可以重名。但是在 Linux 中同级下目录和文件夹不可以重名
-
Windows 系统则是忽略文件名大小写的,Linux 系统是区分文件名大小写的
Linux 文件命名基本上没有限制,除了/
之后几乎可以包含任何字符,包括正则特殊字符
所有命令的输入文件名和文件夹名称的参数都可以用通配符(准确地说是 glob 风格通配符),善用通配符,提高效率
请看《Bash 的模式拓展》
在 linux 下,隐藏文件是以.
开头,其实所有的指令都是可以操作隐藏文件的,文件名明确,没有不能操作的,只要有权限就都可以,这是一个权限问题。但是在用folder/*
匹配文件的时候,默认是无法匹配到隐藏文件的,这是一个匹配问题,
*
匹配所有可见文件,.*
匹配所有隐藏文件,但是会匹配 .
和..
,所以优化一下,使用.[^.]*
,然后将 *
和 .[^.]*
合并为 {.[^.],}*
,这样就可以匹配除了 .
和 ..
以外的包含隐藏文件的所有文件,以后就可以用这个来操作文件夹中的可见文件和隐藏文件
ls
通过 -a
参数可以看到 *
匹配的隐藏文件
rmdir
不需要带任何参数就可以删除 *
匹配的隐藏文件
cp
、rm
、mv
都可以直接配合 {.[^.],}*
来操作包含隐藏文件在内的所有文件,例如 cp -R source1/* target
复制不了隐藏文件, cp -R source1/{.[^.],}* target
就可以。
cp
还有一种简单情况 将*
换成.
即可复制隐藏文件,例如 cp -R source1/* target
复制不了隐藏文件, cp -R source1/. target
就可以。
Linux 中的正则表达式,查看《Linux 中的正则表达式》