Я новичок в UBUNTU. Как я могу объединить файлы в разных каталогах? Используя кошку, чтобы объединить их всех, это дотошная задача. Это единственный способ, которым я знаю. Заранее спасибо, Сайкат
При наличии простых текстовых файлов можно объединить их без трудностей при помощи >>
оператор. Это добавит вывод предыдущей команды в конец файла, указанного после.
Пример:
Вообразите структуру каталогов как это:
parent
|--a
| \--first.txt
\--b
\--second.txt
Теперь contentents a/first.txt
Hello! This is my first Textfile.
~~some lines~~
end
и b/second.txt
содержит
///////////////////
// //
// second file //
// //
///////////////////
Таким образом, мы можем объединить его путем ввода:
$ touch merge.txt
$ cat a/first.txt >> merge.txt
$ cat b/second.txt >> merge.txt
Новый пустой файл merge.txt
в текущем каталоге будет создан, и содержание файлов будет добавлено без перезаписи, как >
сделал бы.
merge.txt
теперь содержит:
Hello! This is my first Textfile.
~~some lines~~
end
///////////////////
// //
// second file //
// //
///////////////////
Готово!
Если у Вас есть больше чем десять файлов, возможно, даже в десяти различных каталогах, можно сделать сценарий удара и позволить компьютеру сделать весь выбор и копирование самостоятельно. Если бы Вы абсолютно плохо знакомы с ударом или сценариями оболочки, я рекомендовал бы Вам читать немного заранее, о каком это способно к и получение основного понимания появления переменных и циклов, таким образом, Вы не становитесь слишком смущенными.
Я использую верхнюю часть http://www.cyberciti.biz/faq/bash-loop-over-file/ как ссылка теперь. Наш сценарий будет в основном походить на это:
#!/bin/bash
FILES="file1
/path/to/file2"
OUTPUT="merge.txt"
for f in $FILES
do
cat $f >> $OUTPUT
done
(О, я надеюсь, что это будет работать),
Если все Ваши файлы совместно используют что-то, что differenciate их из других файлов мы не хотим объединять, это точно, в чем мы нуждаемся. Идеально они совместно используют общего родителя или anchestor папку, где Вы не можете найти никакие другие файлы, но наш. Затем мы можем просто использовать /the/path/to/that/folder/*
как селектор при определении нашего $FILES
переменная. Как Вы видите в модели, мы можем установить несколько селекторов. Я надеюсь, что Вы не заботитесь слишком много о порядке, файлы будут выбраны автоматически, еще мы должны были бы думать о некотором способе указать это... Для нашего примера выше, мы могли установить:
FILES="*/*"
или FILES="*/*.txt"
или FILES="a/* b/*"
или так и OUTPUT="merge.txt"
конечно.
Возможно, мы должны будем обратить внимание на не выбор нашего файла слияния с "*"
, это может закончиться неловкий... Выше я поэтому включал тот /
каждый раз. Вы также могли просто поместить его где-то в другом месте.
Если Ваши файлы следуют за некоторым шаблоном, как p_some-thing-axy-1
,p_some-thing-axy-1
,p_some-thing-bxz-1
, можно выбрать некоторый селектор как p_some-thing-*
или около этого.
Теперь я надеюсь, что можно некоторые использовать это, потому что я отсутствую.