Как записать вывод в файл с тем же именем, что и вход?

Мне интересно, как обрабатывать файлы из какой-либо папки dir1, если они передаются по различным задачам, и в конце мне хотелось бы, чтобы результат был написан в той же структуре папок и именах файлов, то есть у меня есть 2 файла; dir1 / file1 и dir1 / file2. Мне нужна следующая команда:

task1 dir1/* | task2 | task3 --output dir2/${filename}

для вывода dir2 / file1 и dir2 / file2, которые должны представлять обработанные файлы.

2 Solutions collect form web for “Как записать вывод в файл с тем же именем, что и вход?”

Перебирайте файлы в каталоге dir1 , получите базовое имя каждого файла, обработайте его, напишите в выходной файл:

 for path in dir1/*; do name="${path##*/}" task1 "$path" | task2 | task3 --output "dir2/$name" done 

Переменная подстановки ${path##*/} примет значение переменной path и удалит все до (и включает) последнее / . Это создает базовое имя файла.

task1 затем выполняется в файле в каталоге dir1 , результат передается на task2 а результат этого присваивается task3 . Последняя задача использует dir/$name в качестве операнда для своего переключателя --output .

 cd "dir1" && \ find . -maxdepth 1 -type f -exec sh -c ' # task2 on "$1" | task3 > "/path/to/dir2/${1##*/} ' {} {} \; 
Interesting Posts

Как получить значок VPN в Kali 2.0 (gnome) как root?

Не удается удалить или повторно вставить модуль ядра после ошибки, вставив его без перезагрузки

напишите предупреждение, если команда perl в сценарии bash не выполнила замену

Windows Server 2012 R2 и Centos 7 с двойной загрузкой: Windows ушла из меню загрузки

Настроить экран GNU для повторного подключения к текущей ширине терминала при повторном подключении?

Сделать zsh завершение показать первое предположение на той же линии (например, рыбы)

Ошибка Proxychains DNS, но не с помощью ping

Как проверить, что куст DB уже существует?

awk найти строки с двумя совпадениями

Почему переменная видима в подоболочке?

Как использовать afl-fuzz (American Fuzzy Lop) с openssl

Происходят ли потоки, выполняющие блокирующие системные вызовы прерываниями?

Где устанавливать приложения

Запуск нового экземпляра приложения вместо продолжения приостановленного

Компьютер не загружается в Fedora, а вместо этого используется управление Shim UEFI

Linux и Unix - лучшая ОС в мире.