简介
find命令是Linux系统中最重要和最常用的命令之一。
搜索和查找与参数匹配的文件和目录的命令。
查找可以在各种条件下使用,您可以通过权限,用户,组,文件类型,日期,大小等可能的条件查找文件。
语法
find [起始目录] 寻找条件 操作
说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件 的文件并对之采取相关的操作。 该命令提供的寻找条件可以是一个用逻辑运算符 not、and、or 组成的复合条件。
比较具体的语法
find path-name [ -options] [-print –exec -ok 命令 {} \; ]
参数说明
-
path-name
:find命令查找的目录路径,例如可以用“.”表示当前目录,用“/”表示系统根目录。 -
-options
:find命令的限定条件,例如,文件类型-type
,修改时间-mtime
,属主-user
,大小-size
,名字-name
,不包含-prune
-
-print
:将搜索结果输出到标准输出。 -
-exec
:对搜索出符合条件的文件执行所给出的Linux命令,而不询问用户是否需要执行该命令。 -
{}
表示shell命令的选项即为所查找到的文件。 -
命令的末尾必须以
;
结束。注意:格式要正确,
-exec 命令 {} \;
,在}
和\
之间一定要有空格才行。 -
-ok
:对搜索出符合条件的文件执行所给出的Linux命令。与-exec不同的是,它会询问用户是否需要执行该命令。
具体使用
按名称查找
参数 | 说明 |
---|---|
-path pathname |
查找路径名匹配所给字串的所有文件。 |
-name filename |
查找名为filename的文件。 |
-iname filename |
与-name相同,查找名为filename的文件,但忽略大小写,即不区分大小写。 |
-type b/d/c/p/l/f |
按照文件类型查找,查是块设备、目录、字符设备、管道、符号链接、普通文件。b - 块设备文件。d - 目录。c - 字符设备文件。p - 管道文件。l - 符号链接文件。f - 普通文件。s -socket文件 |
示例
查找当前目录
# 下面三种是相同的效果 搜索当前目录的
[10:57:11 root@bak log]# find . -name syslog
./syslog
[10:57:37 root@bak log]# find /var/log/ -name syslog
/var/log/syslog
[10:57:48 root@bak log]# find syslog
syslog
需要注意的是,一旦带了初始路径,就需要加上 -name参数
忽略大小写查找
$ find / -iname syslog
/run/systemd/journal/syslog
/var/log/syslog
/usr/lib/x86_64-linux-gnu/perl/5.34.0/auto/Sys/Syslog
模糊搜索
$ find / -iname "*syslog"
/run/systemd/journal/syslog
/sys/kernel/tracing/events/syscalls/sys_enter_syslog
/sys/kernel/tracing/events/syscalls/sys_exit_syslog
/sys/kernel/debug/tracing/events/syscalls/sys_enter_syslog
/sys/kernel/debug/tracing/events/syscalls/sys_exit_syslog
/var/log/syslog
/var/spool/rsyslog
/etc/logcheck/ignore.d.server/rsyslog
/etc/logrotate.d/rsyslog
/usr/lib/x86_64-linux-gnu/perl/5.34.0/auto/Sys/Syslog
/usr/lib/x86_64-linux-gnu/rsyslog
/usr/lib/rsyslog
/usr/src/linux-headers-5.15.0-100-generic/include/config/NF_LOG_SYSLOG
/usr/src/linux-headers-5.15.0-107-generic/include/config/NF_LOG_SYSLOG
/usr/share/rsyslog
/usr/share/doc/rsyslog
搜索目录
$ find / -type d -name log
/run/log
/var/log
/snap/core20/2318/run/log
/snap/core20/2318/var/log
/snap/core20/2264/run/log
/snap/core20/2264/var/log
按照路径搜索
# find / -path "*/log"
/run/log
/var/log
/snap/core20/2318/run/log
/snap/core20/2318/var/log
/snap/core20/2264/run/log
/snap/core20/2264/var/log
/dev/log
按权限查询
参数 | 说明 |
---|---|
-perm 权限 |
查找具有指定权限的文件和目录 |
可以在后面加 -ls
以达到 ll
的效果
示例
查找权限等于的文件
例如 权限恰好为 111 的
# 下面三条命令是同等的
$ find / -perm 111 -ls
20709759 4 d--x--x--x 2 root root 4096 Dec 1 2022 /var/lib/snapd/void
11989 0 d--x--x--x 2 root root 3 Apr 16 16:05 /snap/core20/2318/var/lib/snapd/void
11987 0 d--x--x--x 2 root root 3 Feb 28 04:05 /snap/core20/2264/var/lib/snapd/void
$ find / -perm u=x,g=x,o=x -ls
$ find / -perm a=x -ls
查找至少具有指定权限的
查找权限最少是775的
$ find / -perm -775 -ls
$ find / -perm -u=rwx,g=rwx,o=rw -ls
查找满足其中任意一个权限的
查找ugo中至少拥有执行权限的
find / -perm /111 -ls
find / -perm /u=x,g=x,o=x -ls
上面的例子就是,只要满足u有执行权限或者g有执行权限或者o有执行权限就能匹配到
find . -perm /o=rwx -ls
只要满足other拥有读写执行中的任意一个,就能匹配到。
查找特殊权限
#查找/usr/bin目录下拥有suid权限的文件
find /usr/bin -perm /u+s
#查找/目录下拥有guid权限的目录
find / -type d -perm /g+s
#查找/目录下拥有sticky权限的目录
find / -type d -perm /o+t
按所属组所属主查找
参数 | 说明 |
---|---|
-user username |
按属主来查找 |
-group groupname |
按属组来查找 |
-gid n |
查找属于ID号为 n 的用户组的所有文件 |
-uid n |
查找属于ID号为 n 的用户的所有文件 |
-nogroup |
查无有效属组的文件,即文件的属组在/etc/groups中不存在 |
-nouser |
查无有效属主的文件,即文件的属主在/etc/passwd中不存(孤儿文件 没有所有者的文件) |
示例
根据用户名查询
$ find / -user bak -ls
6815746 4 drwxr-x--- 4 bak bak 4096 Aug 6 11:23 /home/bak
6815754 0 -rw-r--r-- 1 bak bak 0 Oct 19 2023 /home/bak/.sudo_as_admin_successful
6815780 4 -rw-rw-r-- 1 bak bak 75 Aug 6 11:23 /home/bak/.selected_editor
6815747 4 -rw-r--r-- 1 bak bak 3771 Jan 7 2022 /home/bak/.bashrc
6815781 4 -rw------- 1 bak bak 861 Aug 6 11:23 /home/bak/.viminfo
6815755 4 -rw------- 1 bak bak 55 Aug 6 11:23 /home/bak/.bash_history
6815752 4 drwx------ 2 bak bak 4096 Oct 19 2023 /home/bak/.cache
6815753 0 -rw-r--r-- 1 bak bak 0 Oct 19 2023 /home/bak/.cache/motd.legal-displayed
6815748 4 -rw-r--r-- 1 bak bak 220 Jan 7 2022 /home/bak/.bash_logout
6815749 4 -rw-r--r-- 1 bak bak 807 Jan 7 2022 /home/bak/.profile
6815750 4 drwx------ 2 bak bak 4096 Oct 19 2023 /home/bak/.ssh
6815751 0 -rw------- 1 bak bak 0 Oct 19 2023 /home/bak/.ssh/authorized_keys
根据用户id查询
$ id bak
uid=1000(bak) gid=1000(bak) 组=1000(bak),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd)
$ find / -uid 1000 -ls
6815746 4 drwxr-x--- 4 bak bak 4096 Aug 6 11:23 /home/bak
6815754 0 -rw-r--r-- 1 bak bak 0 Oct 19 2023 /home/bak/.sudo_as_admin_successful
6815780 4 -rw-rw-r-- 1 bak bak 75 Aug 6 11:23 /home/bak/.selected_editor
6815747 4 -rw-r--r-- 1 bak bak 3771 Jan 7 2022 /home/bak/.bashrc
6815781 4 -rw------- 1 bak bak 861 Aug 6 11:23 /home/bak/.viminfo
6815755 4 -rw------- 1 bak bak 55 Aug 6 11:23 /home/bak/.bash_history
6815752 4 drwx------ 2 bak bak 4096 Oct 19 2023 /home/bak/.cache
6815753 0 -rw-r--r-- 1 bak bak 0 Oct 19 2023 /home/bak/.cache/motd.legal-displayed
6815748 4 -rw-r--r-- 1 bak bak 220 Jan 7 2022 /home/bak/.bash_logout
6815749 4 -rw-r--r-- 1 bak bak 807 Jan 7 2022 /home/bak/.profile
6815750 4 drwx------ 2 bak bak 4096 Oct 19 2023 /home/bak/.ssh
6815751 0 -rw------- 1 bak bak 0 Oct 19 2023 /home/bak/.ssh/authorized_keys
根据组名查找
$ find / -group syslog -ls
20709385 4 drwxrwxr-x 14 root syslog 4096 Aug 7 00:00 /var/log
26678 0 dr-xr-xr-x 9 syslog syslog 0 Apr 9 11:41 /proc/957
33381231 0 dr-xr-xr-x 6 syslog syslog 0 Aug 7 10:02 /proc/957/task
33381268 0 dr-xr-xr-x 7 syslog syslog 0 Aug 7 10:02 /proc/957/task/957
33381273 0 dr-xr-xr-x 2 syslog syslog 0 Aug 7 10:02 /proc/957/task/957/fdinfo
33381275 0 dr-xr-xr-x 55 syslog syslog 0 Aug 7 10:02 /proc/957/task/957/net
33381300 0 dr-xr-xr-x 2 syslog syslog 0 Aug 7 10:02 /proc/957/task/957/attr
33381357 0 dr-xr-xr-x 2 syslog syslog 0 Aug 7 10:02 /proc/957/task/957/attr/smack
33381358 0 dr-xr-xr-x 2 syslog syslog 0 Aug 7 10:02 /proc/957/task/957/attr/apparmor
根据组ID查找
$ id admin
uid=1001(admin) gid=1001(admin) 组=1001(admin)
$ find / -gid 1001 -ls
6815756 4 drwxr-x--- 5 admin admin 4096 Apr 19 16:13 /home/admin
6815766 0 -rw-r--r-- 1 admin admin 0 Apr 19 16:13 /home/admin/.sudo_as_admin_successful
6815757 4 -rw-r--r-- 1 admin admin 3771 Jan 7 2022 /home/admin/.bashrc
6815767 4 -rw------- 1 admin admin 15 Apr 19 16:13 /home/admin/.bash_history
6815762 4 drwx------ 2 admin admin 4096 Apr 19 16:12 /home/admin/.cache
6815763 0 -rw-r--r-- 1 admin admin 0 Apr 19 16:12 /home/admin/.cache/motd.legal-displayed
6815758 4 -rw-r--r-- 1 admin admin 220 Jan 7 2022 /home/admin/.bash_logout
6815764 4 drwx------ 3 admin admin 4096 Apr 19 16:12 /home/admin/.ansible
6815765 4 drwx------ 2 admin admin 4096 Apr 19 16:12 /home/admin/.ansible/tmp
6815759 4 -rw-r--r-- 1 admin admin 807 Jan 7 2022 /home/admin/.profile
6815760 4 drwx------ 2 admin admin 4096 Apr 19 16:11 /home/admin/.ssh
6815761 4 -rw------- 1 admin admin 1004 Apr 19 16:11 /home/admin/.ssh/authorized_keys
查找无效属组的所有文件
find / -nogroup
查找无效属主的所有文件
find / -nouser
按照时间来查找
参数 | 说明 |
---|---|
-mtime -n/+n/n |
按文件更改时间来查找文件,单位天 -n指n天以内(不包括第n天) +n指n天以前(不包括第n天) n指以今天为基准往前数的第n天 |
-mmin -n/+n/n |
按文件更改时间来查找文件,单位分钟 -n指n分钟以内(不包括第n分钟) + +n指n分钟以前(不包括第n分钟) n指以当前时间为基准往前数的第n分钟 |
-atime -n/+n/n |
按文件访问时间来查,单位天 -n指n天以内(不包括第n天) +n指n天以前(不包括第n天) n指以今天为基准往前数的第n天 |
-amin -n/+n/n |
依此类推 |
-ctime -n/+n/n |
按文件创建时间来查找文件,单位天 -n指n天以内(不包括第n天) +n指n天以前(不包括第n天) n指以今天为基准往前数的第n天 |
-cmin -n/+n/n |
依此类推 |
注:我们可以使用stat命令来查看一个文件的时间信息。
示例
这里只举例以天为单位的,以分钟为单位的同理
查找当前目录下5天前的文件
$ find . -mtime +5
./2024-08-01_01_00_25.tar.gz
./2024-07-30_01_00_24.tar.gz
./2024-07-24_01_00_24.tar.gz
./2024-07-28_01_00_26.tar.gz
./2024-07-31_01_00_29.tar.gz
./2024-07-27_01_00_28.tar.gz
./2024-07-25_01_00_23.tar.gz
./2024-07-26_01_00_27.tar.gz
./2024-07-29_01_00_25.tar.gz
查找当前目录下5天内的文件
$ find . -mtime -5
.
./2024-08-03_01_00_28.tar.gz
./2024-08-05_01_00_24.tar.gz
./2024-08-06_01_00_26.tar.gz
./2024-08-04_01_00_25.tar.gz
./2024-08-07_01_00_24.tar.gz
查找当前目录下往前第五天的文件
$ find . -mtime 5
./2024-08-02_01_00_25.tar.gz
组合使用,确定时间范围
# 查找两天以前 五天以内的
$ find . -mtime -5 -mtime +2
./2024-08-03_01_00_28.tar.gz
./2024-08-04_01_00_25.tar.gz
# 查找两天内或者五天前的
$ find . -mtime -2 -o -mtime +5
.
./2024-08-01_01_00_25.tar.gz
./2024-07-30_01_00_24.tar.gz
./2024-07-24_01_00_24.tar.gz
./2024-07-28_01_00_26.tar.gz
./2024-07-31_01_00_29.tar.gz
./2024-08-06_01_00_26.tar.gz
./2024-07-27_01_00_28.tar.gz
./2024-07-25_01_00_23.tar.gz
./2024-07-26_01_00_27.tar.gz
./2024-08-07_01_00_24.tar.gz
./2024-07-29_01_00_25.tar.gz
对比时间
查找文件更新时间比文件2024-08-05_01_00_24.tar.gz的内容更新时间新的文件
$ find . -newer 2024-08-05_01_00_24.tar.gz
.
./2024-08-06_01_00_26.tar.gz
./2024-08-07_01_00_24.tar.gz
查找更改时间比文件2024-08-05_01_00_24.tar.gz新但不比文件2024-08-07_01_00_24.tar.gz新的文件
$ find . -newer 2024-08-05_01_00_24.tar.gz ! -newer 2024-08-07_01_00_24.tar.gz
./2024-08-06_01_00_26.tar.gz
./2024-08-07_01_00_24.tar.gz
因为本身自己也不会比自己新,所以肯定是包含自己的
查找文件访问时间比文件2024-08-05_01_00_24.tar.gz的内容更新时间新的文件
$ find . -anewer 2024-08-05_01_00_24.tar.gz
.
./2024-08-06_01_00_26.tar.gz
./2024-08-07_01_00_24.tar.gz
根据大小查找文件
参数 | 说明 |
---|---|
-size [+-]size[cwbkMG] |
按文件大小查找+ 表示大于指定大小- 表示小于指定大小不带符号表示等于指定大小 单位: c(字节) w(字数) b(块数) k(KB) M(MB) G(GB) |
-empty |
查找大小为 0的目录或文件。 |
-maxdepth n |
表示查找最大深度 |
-mindepth n |
表示查找最小深度,就是说从第n层开始找 |
示例
查找大小为10M的文件
find /tmp -size 10M
查找小于10M的文件
find /tmp -size -10M
查找大于10M的文件
find /tmp -size +10M
组合
# 找到大于50MB且小于100MB的文件
find /tmp -size +50M -size -100M
查找最大深度为2,并且gid为1001
$ find / -maxdepth 2 -gid 1001
/home/admin
查找最小深度为2,并且gid为1001
$ find / -mindepth 3 -gid 1001
/home/admin/.sudo_as_admin_successful
/home/admin/.bashrc
/home/admin/.bash_history
/home/admin/.cache
/home/admin/.cache/motd.legal-displayed
/home/admin/.bash_logout
/home/admin/.ansible
/home/admin/.ansible/tmp
/home/admin/.profile
/home/admin/.ssh
/home/admin/.ssh/authorized_keys
查找空文件
查找最大深度为3为空的文件
find / -empty -maxdepth 3 -type f
组合条件
-
与:-a
-
或:-o
-
非:-not !
-
德·摩根定律:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B) -
示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
与
一般 不加任何逻辑参数,就表示与
例如
find / -mindepth 3 -gid 1001
这就是最小深度为3且gid=1001的文件
或
find ./test/ -name "*.conf" -o -name "*.rdb"
查找后缀为conf或者rdb的文件
非
表示排除条件
# 下面两个等价
find /root/test/ -not -name "*.conf"
find /root/test/ ! -name "*.conf"
表示查找后缀不为.conf的文件、
find . -newer 2024-08-05_01_00_24.tar.gz ! -newer 2024-08-07_01_00_24.tar.gz
表示更新时间大于文件2024-08-05_01_00_24.tar.gz但不大于文件2024-08-07_01_00_24.tar.gz的
排除指定目录
参数 | 说明 |
---|---|
-prune |
不在指定目录中查找 |
例如,我想查找除了/etc目录下的所有叫passwd的文件
$ find / -path /etc -prune -o -name passwd
/snap/core20/2318/etc/pam.d/passwd
/snap/core20/2318/etc/passwd
/snap/core20/2318/usr/bin/passwd
/snap/core20/2318/usr/share/bash-completion/completions/passwd
/snap/core20/2318/usr/share/doc/passwd
/snap/core20/2318/usr/share/lintian/overrides/passwd
/snap/core20/2318/var/lib/extrausers/passwd
/snap/core20/2264/etc/pam.d/passwd
/snap/core20/2264/etc/passwd
/snap/core20/2264/usr/bin/passwd
/snap/core20/2264/usr/share/bash-completion/completions/passwd
/snap/core20/2264/usr/share/doc/passwd
/snap/core20/2264/usr/share/lintian/overrides/passwd
/snap/core20/2264/var/lib/extrausers/passwd
/etc
/usr/bin/passwd
/usr/share/lintian/overrides/passwd
/usr/share/bash-completion/completions/passwd
/usr/share/doc/passwd
查找除了/usr或者/etc目录下的所有叫passwd的文件
$ find / \( -path /usr -o -path /etc \) -prune -o -name "passwd"
/snap/core20/2318/etc/pam.d/passwd
/snap/core20/2318/etc/passwd
/snap/core20/2318/usr/bin/passwd
/snap/core20/2318/usr/share/bash-completion/completions/passwd
/snap/core20/2318/usr/share/doc/passwd
/snap/core20/2318/usr/share/lintian/overrides/passwd
/snap/core20/2318/var/lib/extrausers/passwd
/snap/core20/2264/etc/pam.d/passwd
/snap/core20/2264/etc/passwd
/snap/core20/2264/usr/bin/passwd
/snap/core20/2264/usr/share/bash-completion/completions/passwd
/snap/core20/2264/usr/share/doc/passwd
/snap/core20/2264/usr/share/lintian/overrides/passwd
/snap/core20/2264/var/lib/extrausers/passwd
/etc
/usr
操作
有时候查找后还会有简单的操作
参数 | 说明 |
---|---|
-exec |
对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。 |
-ok |
对符合条件的文件执行所给的Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令。 |
-ls |
详细列出所找到的所有文件。达到ll 的效果 |
-print0 |
输出以空字符(\0)分隔的文件名,也就是说 在find 的每一个结果之后加一个NULL字符,而不是默认加一个换行符 |
-fprint 文件名 |
将找到的文件名写入指定文件 |
-print |
在标准输出设备上显示查找出的文件名。默认选项 |
-printf 格式 |
格式的写法请参考有关C语言的书写方式。 |
-delete |
删除所有找到的文件 |
示例
将修改时间在两天内的文件详情列出来
$ find . -mtime -2 -ls
9043972 4 drwxr-xr-x 2 root root 4096 Aug 7 12:05 .
9043979 5826968 -rw-r--r-- 1 root root 5966807882 Aug 6 01:05 ./2024-08-06_01_00_26.tar.gz
9043980 5828764 -rw-r--r-- 1 root root 5968648254 Aug 7 01:05 ./2024-08-07_01_00_24.tar.gz
将非.tar.gz结尾的文件删除掉
# 下面两个命令效果相同
find . -type f ! -name "*.tar.gz" -delete
find . -type f ! -name "*.tar.gz" -exec rm -rf {} \;
其中 {}
代表当前查到的符合条件的文件名,\;
则是语法所要求的结尾符。
在执行操作前询问确认
$ find . -type f ! -name "*.tar.gz" -ok rm -rf {} \;
< rm ... ./1 > ? y # 需要输入是否确定执行
< rm ... ./2 > ? y
输出结果存储到文件中
find . -type f ! -name "*.tar.gz" -fprint res.txt
格式输出
以下是一些常用的格式说明符:
%p
:文件路径。%f
:不包含路径的文件名。%d
:目录的名称。%n
:匹配到的文件数量。%s
:文件大小(以字节为单位)。%t
:文件的最后修改时间。%TY
:文件的最后修改年份。%Tm
:文件的最后修改月份。%Td
:文件的最后修改日期。%Th
:文件的最后修改小时。%Tm
:文件的最后修改分钟。%Ts
:文件的最后修改秒。
# 输出名称和大小
$ find . -type f ! -name "*.tar.gz" -printf '%p: %s bytes\n'
./1: 2 bytes
./abc: 14 bytes
./2: 2 bytes
# 输出名称和最后修改时间
$ find . -type f ! -name "*.tar.gz" -printf '%p: %t\n'
./1: Wed Aug 7 14:33:34.1011635550 2024
./abc: Wed Aug 7 14:36:43.9306559510 2024
./2: Wed Aug 7 14:33:36.4131816700 2024
其他输出
$ find . -type f ! -name "*.tar.gz" -print
./1
./abc
./2
$ find . -type f ! -name "*.tar.gz" -print0
./1./abc./2
复杂操作
当遇到比较复杂的操作可以使用
-print0
结合管道符 xargs -0
来操作
例如
取出大于500M的文件,按大小排序
find . -type f -size +500M -print0 | xargs -0 du -h | sort -nr
find . -name '*.log' -size +500M -print0 | xargs -0 du -h | sort -nr
find下xargs与-exec的区别
find
命令中的-exec
和xargs
都是用于对搜索到的文件执行特定操作的选项,但它们之间有一些区别:
-
用法:
-exec
:find
命令的-exec
选项允许你对搜索到的每个文件执行指定的命令。-exec
的语法是-exec command {} \;
,其中{}
表示找到的文件,\;
表示命令的结束。xargs
:xargs
是一个独立的命令,通常与find
命令结合使用。find
命令的输出作为xargs
的输入,xargs
会将输入分割成多个参数,然后执行指定的命令。
-
处理空格和特殊字符:
-exec
:-exec
选项会保留文件名中的空格和特殊字符,因此在构造命令时需要对这些字符进行转义,文件名有空格等特殊字符也照常处理。xargs
:xargs
默认会将输入的文件名用空格分隔,这可能导致文件名中的空格和特殊字符引起问题。为了解决这个问题,可以使用-0
选项,让find
命令输出以空字符(\0
)分隔的文件名(使用-print0
),然后让xargs
使用-0
选项读取这些文件名。
-
性能:
-exec
:-exec
选项会对每个文件单独调用命令,这可能导致性能较差,尤其是在搜索到大量文件时。xargs
:xargs
会将多个文件名作为参数一次性传递,效率较高,并可使用-n参数控制传递文件个数。
-
灵活性:
-exec
:-exec
选项在处理文件名时较为简单,但在构造命令时需要注意转义特殊字符。xargs
:xargs
提供了更多的选项和灵活性,例如可以指定命令的最大参数长度、处理输入结束等。
总之,-exec
和xargs
都可以用于对搜索到的文件执行操作,但它们在用法、处理空格和特殊字符、性能和灵活性方面有所不同。在实际使用中,可以根据具体需求选择合适的选项。
举例
要将当前目录下所有扩展名为.txt的文件内容合并到一个名为merged.txt的文件中
find . -type f -name "*.txt" | xargs cat > merged.txt
特殊字符处理
find
中
find . -type f -name "file\ with\ spaces.txt" -exec rm {} \;
使用 xargs
find . -type f -name "file with spaces.txt" -print0 | xargs -0 rm
标签:01,tar,admin,gz,find,命令,linux,bak
From: https://www.cnblogs.com/guangdelw/p/18347049