Какой самый простой способ показать содержимое нескольких файлов из командной строки ? Мой каталог выглядит ниже.
./WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b
./xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM
./GZnATXO1e5Hh3Bz1bhgJjjwheIjjZqtnXR0hfOyj
./mWz7ehBNoTZmtDh8JG6sxw2lMJFwIovPzxDGECUY
./JN65F5v3RL2ilHPqNSx9N9D4lvVpqpbJ9lASd8TJ
./At9PS4y4nTiXUO0Z0USnbYkTPBla1msQRpwuruqE
./YiPyMZPCaUDZTiTczAvWII9bJrUqLXCFtH2pXEA2
./JoakdlbRFPwAvWp1d4n8RvMoyMeizCoiriL2Sn2U
./wFPWZUus8Yu7UtESGABLCoqDg36cT90USO0xuyUr
./qseI9PgV1EJfZCDyGGeVytajqG7JeX0r7eA5S1JW
./zgFJpNgXyCsaVh38aCuMGuzHwIbwSNB6rQDdh27x
./.htaccess
Теперь я хотел бы просмотреть содержимое всех файлов, кроме .htaccess
. Это может выглядеть примерно так:
WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b:
Contents of file WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b.
xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM:
Contents of file xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM.
[...]
Я думаю, что это должно быть выполнимо с помощью комбинации find, xargs и cat, но я не понял, как это сделать. Спасибо за ваше время!
command-line
files
Znarkus
источник
источник
Ответы:
Две стандартные команды
head
иtail
распечатать заголовок с именем файла, если вы передаете им более одного аргумента файла. Чтобы напечатать весь файл, используйтеtail -n +1
(печатать с первой строки, т.е. все).Здесь, похоже, вы хотите видеть каждый файл, кроме одного, имя которого начинается с точки. Точечные файлы «скрыты» под unix: они не отображаются в выводе по умолчанию
ls
или в подстановочном совпадении. Таким образом, сопоставление всех не скрытых файлов выполняется просто*
.(Строго говоря,
tail -n +1 -- *
это необходимо, если одно из имен файлов начинается с-
.)источник
--
модификаторе?--
обозначать конец опций - соглашение, которому подчиняется большинство команд. Например ,tail -n +1 -- -f -g
говорит ,tail
что-f
и-g
файлы для чтения (операндов) и не варианты. Это руководство 10 в руководстве по синтаксису утилит POSIX (документ, предназначенный для разработчиков утилит). У меня нет предложения по чтению, предназначенного для конечных пользователей, я бы ожидал, что хороший урок по Unix расскажет о нем в какой-то момент.find
, но затем использовать некоторый exec с форматированием печати: простой способ использоватьfind
иtail
это:find . -type f -print0 -name "*" | xargs -0 tail -n +1 --
(-print0
иxargs -0
и--
гарантировать, что команда также работает с именами файлов с пробелами или начиная с -)Вы можете сделать все это в одном
find
:Это говорит,
find
чтобы найти все файлы (-type f
) в текущем каталоге (.
), кроме (-not
) один с именем.htaccess
(-name .htaccess
). Затем он печатает (-printf
) символ новой строки, после которого следует имя файла (%p
), а затем запускаетcat
файл (-exec cat {} \;
). Это даст вам вывод, как:Если вы делаете это часто, возможно, стоит вставить это в скрипт оболочки или функцию; У меня есть имя,
cats
которое делает именно это:Он зацикливается на каждом аргументе имени файла, выводит имя файла (выделено жирным зеленым цветом), а затем выводит файл:
Итак, команда будет просто:
источник
Чтобы показать содержимое всех файлов в текущей папке, попробуйте:
и аналогично, но рекурсивно:
Формат будет:
filename: content
.Чтобы иметь подобный формат, как предложено, это будет:
Примечания стороны:
\x00
) в приведенных выше примерах предотвращает отображение двоичных файлов (что-I
на самом деле происходит, но мы все равно должны использовать какой-то шаблон).*
), он автоматически игнорирует скрытые файлы, такие как.htaccess
.Смотрите также: grep: отображать имя файла один раз, затем отображать контекст с номерами строк в Unix SE
источник
grep -r ^
достаточно.Вы можете использовать это:
источник
Если вы хотите подстроиться и не тратить слишком много времени на трубы, найдите и все остальное (хотя это самый мощный набор инструментов, который вы когда-либо могли найти)
просто попробуйте использовать цикл for, cat и т. д.
источник
Если вы тоже хотите распечатать, используйте его рекурсивно (например, для файлов с расширением .sql):
источник