写出linux中所有的文件类型及对应的标识符
时间: 2024-03-16 13:42:46 浏览: 265
在 Linux 中,文件类型由文件权限中的特殊位来表示。以下是所有文件类型及其对应的标识符:
- 普通文件: `-` (连字符)
- 目录: `d`
- 符号链接: `l`
- 套接字文件: `s`
- 字符设备文件: `c`
- 块设备文件: `b`
- 命名管道(FIFO): `p`
这些标识符通常出现在 `ls -l` 命令的输出中,例如:
```
-rw-r--r-- 1 user group 2048 Jul 23 12:34 myfile.txt
drwxr-xr-x 2 user group 4096 Jul 23 12:34 mydir
lrwxrwxrwx 1 user group 16 Jul 23 12:34 mylink -> /path/to/target
srwxr-xr-x 1 user group 0 Jul 23 12:34 mysocket
crw-rw---- 1 user group 10, 1 Jul 23 12:34 mychardev
brw-rw---- 1 user group 8, 0 Jul 23 12:34 myblockdev
prw-r----- 1 user group 0 Jul 23 12:34 myfifo
```
可以看到,文件类型的标识符出现在每行的第一个字符位置。例如,第一行的 `-` 表示该文件是一个普通文件。
相关问题
写一段linux的Shell 代码,比较两个目录,将在第一个目录中存而在第二个目录中不存在的文件考到第二个目录
在Linux Shell中,你可以使用`find`命令来查找第一个目录中存在的文件,然后与第二个目录中的文件进行对比,如果在第二个目录中不存在,则复制过去。这里有一个简单的示例:
```bash
# 假设源目录为src_dir,目标目录为目标目录target_dir
src_dir="/path/to/src_dir"
target_dir="/path/to/target_dir"
# 使用find命令找出src_dir中所有文件(包括子目录)
find "$src_dir" -type f
# 过滤掉已经在target_dir中的文件
find "$src_dir" -type f ! -inum "$(ls -lt "$target_dir" | tail -n +2 | awk '{print $1}')"
# 将不在target_dir中的文件复制到target_dir
cp -v "$src_dir"/{}/ "$target_dir"/{}
```
这段脚本会列出`$src_dir`中的所有文件(不递归),排除已经被`ls -lt "$target_dir"`(按时间逆序)最后两条记录(即最新两个文件)所对应的INUM(文件标识符)。然后,使用`cp`命令只复制那些不在目标目录中的文件。
注意:`ls -lt "$target_dir" | tail -n +2 | awk '{print $1}'`这部分用于获取`target_dir`中文件的INUM,如果目标目录较大,可能会有性能影响。
阅读全文