2015-10-18 5 views
1

Я имею следующую команду Linux:Печать в файл первые две строки из всех подпапок

head -2 * > output.txt 

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

Выходной пример:

path_file1: 
first two lines of file1 

path_file2: 
first two lines of file2 

.. 
.. 
.. 

Возможно ли это как команда Linux? Если да, то как?

ответ

2

Вы можете использовать флаг -exec команды find для выполнения head -2.

find . -type f -exec head -2 {} \; > output.txt

0

Это может работать для вас (GNU СЭД):

sed -sn '1,2p' * > /anotherDirectory/output.txt 
+0

Спасибо за ваш ответ. Я попытался запустить его и получил ошибку '... is directory' для каждой из подпапок. Любая идея почему? – Omri

0
output="" 

for f in $(find .) 
do 
    output=$output"\n\n${f}:\n"$(head -2 $f) 
    echo -e $output 
done 

echo -e $output > somefile.txt 

Он перебирает все файлы найденных «найти», добавляет две новые строки к выходу, а затем по имени файла и двоеточием , а затем команду «Глава -2». Наконец, все записано в файл somefile.txt

0

Использование find в сочетании с head (-v печатает имя файла)

find . -type f -exec head -vn2 {} \; >print.txt