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

Мне интересно, как обрабатывать файлы из какой-либо папки 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

Не может обрабатывать диск, потому что «недопустимый токен первичный»

Единое системное изображение (кластеризация) решений

Определить, какой драйвер загружен для подключенного чипа UART?

Как добавить пользователей из данных в текстовый файл

Переместите некоторые файлы на каждый каталог в другой каталог

Есть ли менеджер обновлений без зависимостей gnome для xfce?

Предупреждение CPU – abrt-watch-log

Почему пробелы не включаются в обернутый контент vim backreference?

Используйте SED или AWK для перемещения строк по столбцам

ranger image-preview с прозрачным фоном терминала

Способ преобразования одновременного сочетания клавиш клавиш / букв в другой ключ?

Как получить информацию dmidecode без прав root?

Как исправить «updatedb: не удается найти группу« mlocate »? На entware?

Как «find -exec» передает имена файлов с пробелами?

Замените один блок текста на другой блок текста, когда заменяемый текст находится в файле

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