2015-07-03 6 views
-1

Я хотел бы вставить несколько файлов в уникальный файл с именем, например, «output.txt». Тем не менее я хотел бы присвоить имя папки имени выходного файла, чтобы он был: «output_<name of the Folder>.txt». У меня есть тысячи папок, так что команда «paste» будет работать в цикле for, который я могу написать. Кто-нибудь может мне помочь?Назначьте имя папки для имени файла

+1

Что вы подразумеваете под пастой? Есть команда Unix 'paste', которая помещает строку 1 каждого входного файла в строку 1 вывода, затем строку 2 каждого файла в строку 2 вывода и т. Д. Или вы просто подразумеваете concatenate (для которой есть команда' кошка', конечно). Что вы собираетесь предоставить в качестве аргументов для сценария оболочки? Имена каталогов? Имеются ли в каталогах подкаталоги? У вас есть тысячи каталогов; сколько файлов в каталоге? Вы хотите избавиться от исходных файлов? Может ли быть файл 'output_ .txt' уже в каталоге? –

ответ

1

Вопрос невероятно неясен. Я собираюсь интерпретировать это как означающее, что у вас есть большое количество каталогов, в которых все содержат файл с именем 'output.txt', и вы хотите переместить эти файлы в один каталог с исходным путем, встроенным в имя. Если предположить, что корень дерева каталогов, содержащих все файлы в /path/to/source, и вы хотите, чтобы переместить их в /path/to/destination:

find /path/to/source -name output.txt -exec sh -c 'd=$(dirname "$1" | 
    tr/_); cp "$1" "/path/to/destination/output_$d.txt"' sh {} \; 

Относительные пути будут работать нормально, так и абсолютные пути.

+0

именно то, что я ищу! Большое спасибо! – Elb

0

Я тоже не понимаю, что вы хотите, но mktemp(1) имеет ШАБЛОНЫ, которые могут помочь.

Смежные вопросы