Вам нужен цикл:
for f in test*.in; do testExecutable <"$f" >"my${f%in}out"; done
Вышеупомянутое безопасно для всех имен файлов, даже для имен, содержащих пробелы.
Ad.1.:
find /var/kafka/kafka-logs -type f -name "*.index" -exec rm -v {} \;
La respuesta a la segunda pregunta se puede encontrar aquí:¿Cómo integrar el comando mv después del comando find? .
Tal comando funcionará más rápido (en comparación con find / -exec )debido a los argumentos más grandes para el comando rm a la vez. Esto no requiere GNU find.
P1.
find /var/kafka/kafka-logs -type f -name "*.index" | xargs rm
P2.
find /var/kafka/kafka-logs -name "*.index" | xargs -I {} mv {} /var/tmp/INDEX_BACKUP
También tenga en cuenta que GNU find no admite ACL ni atributos extendidos, por lo que definitivamente no desea utilizar GNU find en Solaris.
para eliminar todos los archivos que terminan en .index
bajo /var/kafka/kafka-logs
, usando GNU find
o compatible:
find /var/kafka/kafka-logs -name \*.index -delete
POSIXly:
find /var/kafka/kafka-logs -name \*.index -exec rm -f {} +
para moverlos a otra carpeta, con GNUmv
:
find /var/kafka/kafka-logs -name \*.index -exec mv -t /var/tmp/INDEX_BACKUP {} +
POSIXly:
find /var/kafka/kafka-logs -name \*.index -exec sh -c '
exec mv "$@" /var/tmp/INDEX_BACKUP/' sh {} +
Используя bash
и предполагая, что нет тысяч этих файлов:
rm /var/kafka/kafka-logs/**.index
mv /var/kafka/kafka-logs/**.index /var/tmp/INDEX_BACKUP
Это не будет проверять, существуют ли уже имена в месте назначения, поэтому он может перезаписать там файлы (вашими примерами файлов, вы получите только одну копию файла 00000000000000000000.index
, например ).
Обе эти команды предполагают, что параметр оболочки globstar
был установлен в bash
с помощью
shopt -s globstar
Это включает шаблон глобуса **
, который будет соответствовать как *
, но через /
в путях.