【问题标题】:find -name with and without xargs give different result带和不带 xargs 的 find -name 给出不同的结果
【发布时间】:2019-02-18 15:38:43
【问题描述】:

我需要对很多目录中的很多文件执行一些操作,比如检查它们是否受密码保护。

我创建了一个 bash 脚本 (fileproc.sh),我想检查它是否有效,所以我做了一件愚蠢的事情来看看它是否有效:

#!/bin/sh
echo 'File: ' + $1

如果我运行一个简单的

find . -name "*.zip" -type f

正如预期的那样,我有一长串 .zip 文件。

如果我跑了

find . -name "*.zip" -type f -print0 | xargs ./fileproc.sh

我只有三个文件。

我做错了什么?

谢谢

【问题讨论】:

  • 在脚本中使用 xargs -0print0 并使用:echo "File: $1"

标签: linux bash shell xargs


【解决方案1】:

xargs 用于运行带有多个参数的命令,请参阅man xarg。它会将find 打印的行追加到命令行,直到达到与系统相关的限制。

$1 只是第一个命令行参数,您看不到第二个和后面的参数。

在你的脚本中尝试

echo 'File(s): ' "$@"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 2015-05-10
    • 1970-01-01
    相关资源
    最近更新 更多