首页 > 系统相关 >linux中的find命令

linux中的find命令

时间:2024-08-07 15:11:05浏览次数:14  
标签:01 tar admin gz find 命令 linux bak

简介

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命令中的-execxargs都是用于对搜索到的文件执行特定操作的选项,但它们之间有一些区别:

  1. 用法

    • -execfind命令的-exec选项允许你对搜索到的每个文件执行指定的命令。-exec的语法是-exec command {} \;,其中{}表示找到的文件,\;表示命令的结束。
    • xargsxargs是一个独立的命令,通常与find命令结合使用。find命令的输出作为xargs的输入,xargs会将输入分割成多个参数,然后执行指定的命令。
  2. 处理空格和特殊字符

    • -exec-exec选项会保留文件名中的空格和特殊字符,因此在构造命令时需要对这些字符进行转义,文件名有空格等特殊字符也照常处理。
    • xargsxargs默认会将输入的文件名用空格分隔,这可能导致文件名中的空格和特殊字符引起问题。为了解决这个问题,可以使用-0选项,让find命令输出以空字符(\0)分隔的文件名(使用-print0),然后让xargs使用-0选项读取这些文件名。
  3. 性能

    • -exec-exec选项会对每个文件单独调用命令,这可能导致性能较差,尤其是在搜索到大量文件时。
    • xargsxargs会将多个文件名作为参数一次性传递,效率较高,并可使用-n参数控制传递文件个数。
  4. 灵活性

    • -exec-exec选项在处理文件名时较为简单,但在构造命令时需要注意转义特殊字符。
    • xargsxargs提供了更多的选项和灵活性,例如可以指定命令的最大参数长度、处理输入结束等。

总之,-execxargs都可以用于对搜索到的文件执行操作,但它们在用法、处理空格和特殊字符、性能和灵活性方面有所不同。在实际使用中,可以根据具体需求选择合适的选项。

举例

要将当前目录下所有扩展名为.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

相关文章

  • Linux服务器配置SHH免密互通
    服务器A172.25.11.11,服务器B172.25.11.12在服务器A上配置假设服务器A的IP地址为172.25.11.11,我们将在这台服务器上生成密钥对并将公钥复制到服务器B上。生成密钥对:打开终端,执行以下命令生成密钥对。在生成过程中,你可以选择保留默认路径和设置空密码以简化使用,也可......
  • Linux三剑客之grep
    介绍Linuxgrep(globalregularexpression)命令用于查找文件里符合条件的字符串或正则表达式。grep是行过滤工具,用于根据关键字进行行过滤,包含关键字的行过滤出来。根据模式去搜索文本,并将符合模式的文本行显示出来。语法grep[options]pattern[files]options:选项参数......
  • linux与windows环境下qt程序打包教程
    一、演示环境qt5.14.2二、Linux2.1关联依赖文件2.1.1下载打包工具在Windows环境下可以使用QtCreator自带的官方工具进行打包,而Linux环境下没有官方工具,需要借助第三方工具才能打包。如:linuxdeployqt、CQtDeployer、AppImageKit,甚至是自己编写shell将依赖导入指定目录......
  • Linux内核学习—— 1内核体系结构
    一内核体系结构1内核模式与体系结构2内核中断概括3进程管理概括二内核源码结构三内核引导程序操作系统结构:用户应用程序操作系统服务层内核(文件系统,内存管理,进程管理,驱动管理)硬件系统驱动操作系统工作方式:把做操作系统从用户态切换到内核态(用户应用程序到内核流......
  • golang sliver二次开发自定义命令(格式乱后面再调)
    准备工作sliver客户端和服务端之间命令的通信采用的grpc,服务端和和植入程序通信使用的protobuf,所以在开发之前需要了解grpc和protobuf,相关文档:https://jergoo.gitbooks.io/go-grpc-practice-guide/content/chapter2/hello-grpc.htmlhttps://jergoo.gitbooks.io/go-grpc-pra......
  • Linux服务器SSH远程密钥免密登录
    说明业务场景中经常需要进行跨服务器的操作,即从一台服务器上登录到另外一台服务器,默认情况下,SSH远程登录时需要输入远程服务器密码。当需要在可信任的服务器之间进行频繁或自动化的操作时,输入密码就会带来不便。本文介绍如何实现SSH远程免密登录。服务器信息假设有2台服......
  • Nessus Professional 10.8.0 Auto Installer for RHEL 9/AlmaLinux 9/Rocky Linux 9
    NessusProfessional10.8.0AutoInstallerforRHEL9/AlmaLinux9/RockyLinux9发布Nessus试用版自动化安装程序,支持macOSSonoma、RHEL9和Ubuntu24.04请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-rhel-9/,查看最新版。原创作品,转载请保留出处。N......
  • Linux安装Docker
    安装前问题1.新安装的CentOS在首次登录时出现需要创建一个新用户的界面Ctrl+Alter+F2新建一个命令行桌面,在这个界面可以使用root账号密码登录在命令行界面执行以下命令,即可跳过该步骤yumremovegnome-initial-setupinit3init52.无法正常显示ipv4地址1.进入存放网......
  • linux进程管理相关命令
    一、进程的概念程序的一次执行就是一个进程 程序的两次执行就产生了p1和p2进程 二、使用ps命令查看进程显示进程(process)的动态1、语法:            ps[options]2、常见的参数:    -A 列出所有的行程       -w ......
  • Linux 修改 默认 shell
    连接到目标计算机后,默认情况下会进入目标计算机的默认shell。要切换到bashshell,只需在终端窗口中输入以bash,以非登录交互方式启动bashshell。但是每次都输入bash很麻烦,就需要修改默认shell,使其登录就进入bash(或者其他shell)。查看系统已安装的shell如果要查看当前系统的she......