генерировать имена файлов в цикле
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я использую Mac OSX. Сценарий bash находится в другом каталоге из файлов, требующих обработки. Отсюда начинается моя борьба …
ПОМОЩЬ 1 : У меня есть несколько файлов, каждый из которых размещен в подкаталоге родительского каталога, который должен быть подан в качестве входных файлов для моего инструмента биоинформатики. Я обнаружил, что цикл for будет работать для этого.
- Использование tmux для презентаций
- Почему новые линии испортили мое состояние?
- .sh-файл, используемый sftp после загрузки и не может быть выполнен
- Поиск сценария оболочки из Emacs
- Найти отличия в файле и сортировке файла по ключу
for file in ~/Desktop/parent\ folder/*/*.txt; do exTool INPUT= ${file##*/} OUTPUT= ${file%.txt}_exd.txt
Я надеюсь ввести файл (вырезая список папок, прикрепленный к файлу $ file), а затем вывести файл, удалив «.txt» и добавив _exd.txt. Ошибка, которую я получаю, заключается в том, что на входе указан список папок, и в частности, «родительская папка» whitespace вызывает неправильную информацию ввода.
HELP 2 : Как расширение первого случая, если я хочу вывести файл в тот же подкаталог, что и вход, нужно ли добавить специальную команду?
ПОМОЩЬ 3 : Если у меня есть 2 файла в каждом подкаталоге (input_1.txt и input_2.txt), и я хотел бы ввести оба в одну команду. Как выглядит сценарий, если он вложен в цикл for?
for file in ~/Desktop/parent\ folder/*/*.txt; do bioTool INPUT1= ${file%.txt}_1.txt INPUT2= ${file%.txt}_2.txt OUTPUT= ${file%%.*}
Для вывода обратите внимание, что мне нужно только базовое имя файла, так как инструмент добавит число в конце имени для обозначения выхода 1-го и 2-го файлов и расширения. По какой-то причине я чувствую, что секция после «in» в цикле for выполняется неправильно. Это было решение для коленного судорог для того, чтобы иметь скрипт в каталоге, отличном от файлов.
Любая помощь будет принята с благодарностью, поддержана, понравится, принята, одобрена. Большое спасибо за Вашу помощь.
- cp или rsync, действительно ли CP это стоит?
- Используя cURL, как я могу получить числовую строку, содержащую запятые и пробелы, и преобразовать их в строку NON COMAFIED
- Почему ядро убивает мой процесс с отключением при выходе из системы?
- В bash можно ли использовать целочисленную переменную в управлении циклом цикла for?
- Помощь в командной строке Centos gawk
- В чем смысл «$ {name ## * /}» в Shell
- Использование inotify для мониторинга каталога, но не работает 100%
- Как запустить демона обработки файлов?
One Solution collect form web for “генерировать имена файлов в цикле”
ПОМОЩЬ 1
Из-за пробела вам нужно указать:
INPUT= "${file##*/}" OUTPUT= "${file%.txt}"_exd.txt
Кажется немного странным, однако, что между INPUT=
и именем файла есть пробел.
ПОМОЩЬ 3
Если у вас есть файл input_1.txt
то ${file%.txt}_1.txt
становится input_1_1.txt
.
Я хотел бы указать точное имя файла:
for file in ~/Desktop/parent\ folder/*/input_1.txt; do bioTool INPUT1= "${file}" INPUT2= "${file%_1.txt}_2.txt" OUTPUT= "${file%%.*}" done
ПОМОЩЬ 4
Это вообще не оболочка.
изменение в подкаталоги
for file in ~/Desktop/parent\ folder/*/input_1.txt; do subdir="${file%/*}" pushd "$subdir" &>/dev/null file="${file##*/}" bioTool INPUT1= "${file}" INPUT2= "${file%_1.txt}_2.txt" OUTPUT= "${file%%.*}" popd &>/dev/null done
- Как назначить переменную внутри трубы
- Расширенный логический том в LVM по-прежнему показывает старый размер