1

Я знаю, что используя «ls -R». в bash вы можете рекурсивно перечислять имена файлов.

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

Есть ли способ отформатировать вывод такой команды? Как, скажем, добавить что-то вроде нескольких пустых строк между содержимым каждого из файлов для лучшей читаемости?

2 ответа2

0

Создайте мета-скрипт с помощью find и передайте его sh.

$ find /home/jaroslav/tmp/su/  2>/dev/null \
    -printf 'echo -e \\\\n\\\\n%p\ncat "%p"\n' |sh

из:

/home/jaroslav/tmp/su/
cat: /home/jaroslav/tmp/su/: Is a directory


/home/jaroslav/tmp/su/diff.tar.gz
J▒▒P▒▒M
6▒M)FR▒▒▒▒▒▒F2▒/9▒e▒▒s]▒N▒h▒▒ޫzr▒▒hD▒▒Z&▒▒X▒▒|*▒o▒▒z▒▒▒▒|x߁▒▒E▒▒▒4▒▒Kऺ▒▒J▒-▒B▒▒▒Z▒▒▒?▒▒▒▒▒
        ▒▒P▒▒鿶▒▒JF▒j▒=Z▒?%▒▒▒▒▒▒▒▒▒▒▒{▒▒▒M▒▒▒▒$▒▒q(

/home/jaroslav/tmp/su/while
while read line; do
    login=$(echo $line | cut -d : -f 1)
        echo $login
done < /etc/passwd
0
find . -type f | while read file;
do
  # Here you can do whatever you like
  # Like output a few empty lines
  echo
  echo

  # output filename
  echo $file      
  # this prints the contents of the file to STD OUT
  cat $file;

done > targetfile

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .