Тогда не исполняйте.
find -whatever |
while read filename; do
Whatever you did in -exec before "$filename"
Other thing "$filename"
done
Это не надежно с именами файлов, содержащими специальные символы.
Редактировать : Если вы хотите сделатьнесколько вещей к попаданиям, возвращаемым find
, это, безусловно, возможно и с find -exec
или xargs
:
find -whatever -exec sh -c 'whatever you did in -exec before {}; other thing {}' \;
Или вы можете изменить вывод в скрипт оболочки и передать его sh
:
find -whatever -printf 'mv %p destdir; ln -s destdir/%f %h\n' | sh
Но если вы действительно, действительно хотите, чтобы действие произошло, как только find
узнает о файле, -exec
, вероятно, путь.(Мне не ясно, при каких обстоятельствах это было бы полезным требованием. Возможно, вы можете объяснить, чего вы хотите достичь?)
Если вы хотите сохранить список попаданий, возвращаемый find
, чтобы выможет выполнить дополнительные действия после завершения find
, заставить выводить совпадения, как в предыдущем примере, и сохранить вывод в файле или передать его другой команде, как в первом примере.