linux - 带和不带 xargs 的 find -name 给出不同的结果
问题描述
我需要对很多目录中的很多文件执行一些操作,比如检查它们是否受密码保护。
我创建了一个 bash 脚本(fileproc.sh),我想检查它是否有效,所以我做了一件愚蠢的事情来看看它是否有效:
#!/bin/sh
echo 'File: ' + $1
然后,如果我运行一个简单的
find . -name "*.zip" -type f
正如预期的那样,我有一长串 .zip 文件。
如果我跑
find . -name "*.zip" -type f -print0 | xargs ./fileproc.sh
我只有三个文件。
我究竟做错了什么?
谢谢
解决方案
xargs
用于运行带有多个参数的命令,请参阅man xarg
. 它会将打印的行附加find
到命令行,直到达到与系统相关的限制。
$1
只是第一个命令行参数,你看不到第二个和后面的参数。
在您的脚本中尝试
echo 'File(s): ' "$@"
推荐阅读
- reactjs - 如何等到测试库中按钮的禁用状态发生更改?
- python - 聚合和自定义函数 pandas
- java - 使用 JDK 1.8 编译期间出现“调用 com.sun.tools.ws.wscompile.WsimportTool 失败”错误
- python - 大熊猫在垂直连接后得到原始数据框
- java - 两种方式的 SSL 身份验证问题:HTTP 500 - 对等方终止 Hadoop | 套接字写入错误 | PKCS12
- python - 使用 cv2 将 video.mp4(小尺寸)转换为图像序列(统称为更大尺寸)时的尺寸差异
- mysql - Docker SpringBoot MySql:驱动没有从服务器收到任何数据包
- firebase - 颤抖着在firebase中获得名字
- python - 不和谐.py | 获取有关用户连接帐户的信息
- pytest - pytest:如何使用满足特定条件的每个夹具参数化测试