xargs 命令是 Unix 系统中一个功能强大的实用工具,它允许用户从标准输入中**参数并执行命令。它经常与其他命令一起使用,例如 find,grep,ls 等等。
以下是一些 xargs 命令的常用选项和示例的解释:
- -n:指定每次执行命令使用的最大参数数量。例如,xargs -n 1 command 将逐个执行 command 的一个参数。
- -I:将命令中指定的占位符字符串替换为标准输入中的参数。例如,xargs -I {} command {} 将使用标准输入中的参数替换 {}。
- -t:在执行命令之前将要执行的命令打印到标准错误输出。例如,xargs -t command 将在执行命令之前打印要执行的命令。
- -p:在执行每个命令之前提示用户确认。例如,xargs -p command 将在执行每个命令之前提示用户确认。
- -0:指定输入项以空字符而不是空格分隔。当处理包含空格或其他特殊字符的文件名时,这非常有用。例如,find . -name '*.txt' -print0 | xargs -0 command 将在所有以 .txt 结尾的文件上执行 command。
以下是 xargs 的一些示例用法:
- 要删除以 .bak 结尾的目录中的所有文件,可以使用以下命令:
find . -name '*.bak' -print0 | xargs -0 rm
- 要在特定扩展名的所有文件中搜索字符串,可以使用以下命令:
find . -name '*.txt' -print0 | xargs -0 grep 'search_string'
- 要同时在多个文件上执行命令,可以使用以下命令:
ls *.txt | xargs command
- 要将所有特定扩展名的文件转换为不同格式,可以使用以下命令:
find . -name '*.jpg' -print0 | xargs -0 -I {} convert {} {}.png
LINUX下批量删除空文件
Linux下批量删除空文件(大小等于0的文件)的方法
find . -name "*" -type f -size 0c | xargs -n 1 rm -f
用这个还能够删除指定大小的文件,仅仅要改动相应的 -size 參数即可,比如:
find . -name "*" -type f -size 1024c | xargs -n 1 rm -f
就是删除1k大小的文件。
(但注意 不要用 -size 1k。这个得到的是占用空间1k,不是文件大小1k的)。
假设仅仅要删除目录或者名字连接等,能够相应的改 -type 參数,详细细节见 man find