find -name с и без xargs дает другой результат - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужно выполнить некоторые операции над множеством файлов в нескольких каталогах, скажем, проверить, защищены ли они паролем.

Я создал скрипт bash (fileproc.sh)и я хотел бы проверить, работает ли он, поэтому я сделал глупую вещь, просто чтобы посмотреть, работает ли она:

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

Тогда, если я запусту простую

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

, у меня естьдлинный список ZIP-файлов, как и ожидалось.

Если я запустил

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

У меня есть только три файла.

Что я делаю не так?

Спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

xargs используется для запуска команды с более чем одним аргументом, см. man xarg.Он будет добавлять строки, напечатанные find, в командную строку, пока не будет достигнут системно-зависимый предел.

$1 - это только первый аргумент командной строки, второй и последующие аргументы не отображаются..

В вашем скрипте попробуйте

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