Cat выбирает файлы быстро и легко? - PullRequest
1 голос
/ 17 февраля 2011

Я до сих пор катал файлы в Терминале ... но на это уходит много времени. То, что я хочу, это что-то вроде:

У меня есть папка с сотнями файлов, и я хочу эффективно объединить несколько файлов. Например, есть ли способ выбрать (в Finder) пять разделенных файлов;

file.txt.001, file.txt.002, file.txt.003, file.txt.004

.. а затем щелкните правой кнопкой мыши на них в Finder и просто нажмите Merge?

Я знаю, что это невозможно из коробки, конечно, но с действием Automator, дроплетом или сценарием оболочки возможно ли что-то подобное сделать? Или, возможно, назначив этому cat-action сочетание клавиш, и при нажатии выбранных файлов в Finder они будут автоматически объединены в новый файл И помещены в ту же папку, С именем, основанным на исходных файлах разбиения?

В этом примере файлы с 001 по file.004 волшебным образом появляются в той же папке, что и файл с именем fileMerged.txt?

У меня около миллиона таких файлов, поэтому эффективный рабочий процесс для этого мог бы спасти жизнь. Я работаю над интерактивной книгой, и издатель дал мне это задание ..

Ответы [ 2 ]

0 голосов
/ 17 февраля 2011

Судя по вашему описанию имен файлов, вы можете очень легко автоматизировать это с помощью bash. например,

PREFIXES=`ls -1 | grep -o "^.*\." | uniq`
for PREFIX in $PREFIXES; do cat ${PREFIX}* > ${PREFIX}.all; done

Это объединит все файлы в одном каталоге с одинаковым префиксом.

ls -1 выводит список всех файлов в каталоге (если он охватывает несколько каталогов, вместо него можно использовать find. grep -o "^.*\." будет сопоставлять все до последней точки в имени файла (вы также можете использовать sed -e 's/.[0-9]*$/./' для удаления последние цифры. uniq отфильтрует все дубликаты. Затем у вас будет что-то вроде speech1.txt. sound1.txt. в переменной PREFIXES. Следующая строка проходит по ним и объединяет группы файлов по отдельности, используя * подстановочный знак.

0 голосов
/ 17 февраля 2011
cat * > output.file   

работает как скрипт sh. Он передает содержимое файлов в этот output.file. * разворачивается на все файлы в каталоге.

...