目录
- 1. 只查找当前目录,不查找子目录中的指定文件
- 2. 查找到的文件批量复制到指定文件夹中
- 3. 查找到的文件批量修改所属用户和组
- 4. 查找到的文件批量添加执行权限
- 5. 查找到的文件内容全部导入指定文件
- 6. 查找指定目录下指定用户所属的文件
- 7. 获取当前目录下,指定文件的绝对路径
1. 只查找当前目录,不查找子目录中的指定文件
-maxdepth
:指定查找目录的深度
# 只查找当前目录,不查找其子目录
find ./ -maxdepth 1 -type f -name "*.txt"
# 查找当前目录和其第1层的子目录
find ./ -maxdepth 2 -type f -name "*.txt"
2. 查找到的文件批量复制到指定文件夹中
- 将work目录下后缀为dat的文件批量复制到temp文件夹中
-exec
选项执行cp
命令来复制文件{}
是一个占位符,会被实际找到的文件名替代\;
表示-exec
选项的结束
💥注意:如果要复制的文件的数量多,且体积大,可以使用 find + xargs
命令进行复制,详情可参考 Linux xargs命令 的3.3 章节
find ./work/ -name "*.dat" -exec cp {} /home/fengyehong/jmw_work_space/temp \;
3. 查找到的文件批量修改所属用户和组
find ./ -maxdepth 1 -type f -user root -exec chown fengyehong:fengyehong {} \;
4. 查找到的文件批量添加执行权限
find ./ -maxdepth 1 -name "*.sh" | xargs chmod u+x
5. 查找到的文件内容全部导入指定文件
find /home/ -type f -name "*.txt" -exec cat {} \; > all.txt
6. 查找指定目录下指定用户所属的文件
-user root
:文件所属用户为root-name "*.sh"
:文件名后缀为sh
find ./ -user root -name "*.sh"
7. 获取当前目录下,指定文件的绝对路径
- 使用
$(pwd)
来获取当前目录的绝对路径
fengyehong@ubuntu:~$ find $(pwd) -maxdepth 1 -type f -name "*.txt"
/home/fengyehong/jmw_work_space/20240908/file_09_01.txt
/home/fengyehong/jmw_work_space/20240908/file_05_01.txt
/home/fengyehong/jmw_work_space/20240908/file_06_01.txt
/home/fengyehong/jmw_work_space/20240908/file_10_01.txt
/home/fengyehong/jmw_work_space/20240908/file_04_01.txt
/home/fengyehong/jmw_work_space/20240908/file_01_01.txt
/home/fengyehong/jmw_work_space/20240908/file_02_01.txt
/home/fengyehong/jmw_work_space/20240908/file_03_01.txt
/home/fengyehong/jmw_work_space/20240908/file_07_01.txt
/home/fengyehong/jmw_work_space/20240908/file_08_01.txt