Linux基础篇之目录的遍历及详细信息展示、移动、复制

遍历及详细信息展示:ls

ls可选选项解释如下:

名称

ls - 列出目录内容

ls [-CFRacdilqrtu1][H |-L][fgmnopsx][file…]


应支持以下选项:
-F 除非指定了-H或-L选项,否则不要跟随以操作数命名的符号链接。在作为目录的每个路径名后面写一个斜杠(“/”),在作为可执行文件的每个路径名后面写一个星号(“*”),在每个后面的竖条(“|”)是FIFO,每个后面的at符号(“@”)是符号链接。对于其他文件类型,可以写入其他符号。

-H 如果在命令行上指定了引用目录类型文件的符号链接,ls应将文件信息和文件类型评估为链接引用的文件的信息和文件类型,而不是链接本身;但是,ls应写入链接本身的名称,而不是链接引用的文件。


-L 评估所有符号链接(无论是在命令行上命名的还是在文件层次结构中遇到的)的文件信息和文件类型,使其成为链接引用的文件的信息和文件类型,而不是链接本身;怎么做-无论如何,ls应写入链接本身的名称,而不是链接引用的文件。当-L与-L一起使用时,以长格式写入符号链接的内容(请参阅标准输出部分)。

-R 递归列出遇到的子目录。

-a 写出所有目录条目,包括名称以句号('.'开头的条目)。除非明确引用、提供了-a选项或简单的-心理状态定义的条件应导致其被写入。

-c使用上次修改文件状态信息的时间(参见IEEE Std 1003.1-2001系统接口卷中的<sys/stat.h>),而不是文件本身的上次修改时间进行排序(-t)或写入(

-l) 。

-d 除非指定了-H或-L选项,否则不要跟随以操作数命名的符号链接。不要将目录与其他类型的文件区别对待。将-d与-R一起使用会产生未指定的结果。

-f 强制将每个参数解释为一个目录,并列出在每个插槽中找到的名称。该选项应关闭-l、-t、-s和-r,并应打开-a;顺序是条目在列表中出现的顺序目录

-g与-l相同,但不得写明所有者。

-i 为每个文件编写文件序列号(见IEEE Std 1003.1-2001系统接口卷中的stat()。

-l(字母ell.)除非指定了-H或-L选项,否则不要跟随以操作数命名的符号链接。以长格式写出(参见标准部分)。当规定了-l(ell)时,应假定为-1(一)。

-m 流输出格式;在页面上列出文件,用逗号分隔。

-n 与 -l 相同,只是应该写入所有者的UID和GID编号,而不是相关的字符串。

-o与-l相同,但不应书写该组。

-p如果文件是目录,在每个文件名后写一个斜杠(“/”)。

-q强制将不可打印的文件名字符和<tab>s的每个实例写为问号(“?”)字符。如果输出到终端设备,则默认情况下,实现可能会提供此选项。

-r反转排序顺序以获得反向排序顺序或最早排序顺序。

-s表示显示的每个文件消耗的文件系统块总数。块大小由实现定义。

-t排序时,主键是时间修改的(最新修改的第一个),次键是排序序列中的文件名。

-u使用上次访问的时间(参见<sys/stat.h>)而不是文件的上次修改来进行排序(-t)或写入(-l)。

-x与-C相同,只是多文本列输出是通过跨列排序而不是向下排序的条目生成的。

-1(数字一)强制输出为每行一个条目。

 实战演习:

[root@7e4568607a2a linux]# ls -F
dir_perm.sh*  show123.sh*  test/
[root@7e4568607a2a linux]#
[root@7e4568607a2a linux]# ls -F
dir_perm.sh*  show123.sh*  test/
[root@7e4568607a2a linux]# ls -H
dir_perm.sh  show123.sh  test
[root@7e4568607a2a linux]# ls -h
dir_perm.sh  show123.sh  test
[root@7e4568607a2a linux]# ls -i
85207 dir_perm.sh  84887 show123.sh  26109 test
[root@7e4568607a2a linux]# ls -l
total 12
-rwxr-xr-x 1 root root  544 Feb 24 06:08 dir_perm.sh
-rwxrwxrwx 1 root root  380 Feb 24 03:52 show123.sh
drwxr-xr-x 2 root root 4096 Feb 24 07:06 test
[root@7e4568607a2a linux]# ls -n
total 12
-rwxr-xr-x 1 0 0  544 Feb 24 06:08 dir_perm.sh
-rwxrwxrwx 1 0 0  380 Feb 24 03:52 show123.sh
drwxr-xr-x 2 0 0 4096 Feb 24 07:06 test
[root@7e4568607a2a linux]# ls -r
test  show123.sh  dir_perm.sh
[root@7e4568607a2a linux]# ls -R
.:
dir_perm.sh  show123.sh  test

./test:
[root@7e4568607a2a linux]# mkdir test/test2
[root@7e4568607a2a linux]# ls -R
.:
dir_perm.sh  show123.sh  test

./test:
test2

./test/test2:
[root@7e4568607a2a linux]# ls -S
test  dir_perm.sh  show123.sh
[root@7e4568607a2a linux]# ls -t
test  dir_perm.sh  show123.sh
[root@7e4568607a2a linux]# ls --full-time
total 12
-rwxr-xr-x 1 root root  544 2022-02-24 06:08:26.550161900 +0000 dir_perm.sh
-rwxrwxrwx 1 root root  380 2022-02-24 03:52:26.188685300 +0000 show123.sh
drwxr-xr-x 3 root root 4096 2022-02-24 07:09:37.570161900 +0000 test
[root@7e4568607a2a linux]# ls -alF
total 20
drwxr-xr-x 3 root root 4096 Feb 24 07:06 ./
drwxr-xr-x 3 root root 4096 Feb 24 06:37 ../
-rwxr-xr-x 1 root root  544 Feb 24 06:08 dir_perm.sh*
-rwxrwxrwx 1 root root  380 Feb 24 03:52 show123.sh*
drwxr-xr-x 3 root root 4096 Feb 24 07:09 test/

移动命令 mv

mv可选选项解释如下:

-f 如果目标路径存在,则不提示确认。之前出现的任何-i选项都将被忽略。

-i 会提示确认目标路径是否存在。任何之前出现的-f选项都将被忽略。

 实战演习:

# 创建文件夹test2
[root@7e4568607a2a test]# mkdir test2
# 移动文件夹test2到上级目录
[root@7e4568607a2a test]# mv test2 ../
[root@7e4568607a2a test]# ls
test
[root@7e4568607a2a test]# ls ..
dir_perm.sh  show123.sh  test  test2
[root@7e4568607a2a test]# ls
test
# 创建文件夹test2
[root@7e4568607a2a test]# mkdir test2
# 移动文件夹test2到上级目录,因为我们已经移动一个test2文件夹到上级目录了,所以会提示是否覆盖,yes为覆盖,no为不覆盖,mv默认是自带选项-i的指令的
[root@7e4568607a2a test]# mv test2 ..
mv: overwrite '../test2'? yes
[root@7e4568607a2a test]# ls
test
[root@7e4568607a2a test]# ls ..
dir_perm.sh  show123.sh  test  test2
# 创建文件夹test2
[root@7e4568607a2a test]# mkdir test2
# 移动文件夹test2到上级目录,-f 不管文件夹是否存在都会强制移动并覆盖掉已有文件夹
[root@7e4568607a2a test]# mv -f test2 ..
[root@7e4568607a2a test]# ls
test
[root@7e4568607a2a test]# ls ..
dir_perm.sh  show123.sh  test  test2

复制命令cp

cp 可选选项解释如下:

-f 强制复制,如果目标已存在则移除后再尝试一次

-i 在复制到任何现有的目标文件之前,我会编写一个标准错误提示。如果标准输入的响应是肯定的,则应尝试复制;否则,它将不被允许。

-L 创建链接,就像是windows上到创建快捷方式。

-P 连同文件的属性一起复制。

-R 复制文件层次结构。

-r 复制文件层次结构。特殊文件的处理由实现定义

实战演习:

# 新建test.txt文件
[root@7e4568607a2a test]# touch test.txt
# 复制文件到上级目录
[root@7e4568607a2a test]# cp test.txt ..
# 再次复制文件到上级目录,因为文件已存在,所以会提示是否覆盖,跟cp -i效果一致
[root@7e4568607a2a test]# cp test.txt ..
cp: overwrite '../test.txt'? yes
[root@7e4568607a2a test]# cp -i test.txt ..
cp: overwrite '../test.txt'?
# 强制复制文件到上级目录,不会提示
[root@7e4568607a2a test]# cp -f test.txt ..
# 删除上级目录的test.txt文件
[root@7e4568607a2a test]# rm ../test.txt
rm: remove regular empty file '../test.txt'? yes
# 在上级目录创建test.txt的连结档
[root@7e4568607a2a test]# cp -l test.txt ..
# 删除上级目录的text.txt
[root@7e4568607a2a test]# rm ../test.txt
rm: remove regular empty file '../test.txt'? yes
# 复制文件及属性到上级目录
[root@7e4568607a2a test]# cp -p test.txt ..
[root@7e4568607a2a test]# ls -alF ../test.txt
-rw-r--r-- 1 root root 0 Feb 24 07:29 ../test.txt
[root@7e4568607a2a test]# ls -alF test.txt
-rw-r--r-- 1 root root 0 Feb 24 07:29 test.txt
# 复制当前文件夹下的所有内容到test3文件夹
[root@7e4568607a2a test]# cp -r ./* test3
cp: cannot copy a directory, './test3', into itself, 'test3/test3'
[root@7e4568607a2a test]# ls
test  test.txt  test2  test3
[root@7e4568607a2a test]# ls test3
test  test.txt  test2  test3

猜你喜欢

转载自blog.csdn.net/Attitude_do_it/article/details/123111858