Имя файла с точкой впереди [дубликат]

gawk '/^.{9}$/{print FILENAME}' RS='\0' *

Elegí 9 caracteres, porque los 8 caracteres y el carácter de nueva línea al final de la línea = 9 caracteres en total. Si necesita estrictamente 8 caracteres con la nueva línea incluida, debe usar el número 8 en el patrón.

Pruebas

Tengo cuatro archivos en la carpeta de prueba:

$ tail -n +1 -- *
==> 11_chars <==
zzzzzzzzzz

==> 5_chars <==
zzzz

==> 7_chars <==
zzzzzz

==> 9_chars <==
zzzzzzzz

Salida

$ gawk '/^.{9}$/{print FILENAME}' RS='\0' *
9_chars
-1
15.03.2019, 05:57
1 ответ

Единственное «особенное» в файле или каталоге с ведущей точкой в ​​имени, таком как .myfile, заключается в том, что он не будет отображаться в выводе lsпо умолчанию. Он также не будет соответствовать шаблону подстановки имен файлов, который явно не соответствует именам файлов, начинающимся с точки.

Предполагается, что каталог изначально пуст:

$ touch.myfile    # this creates an empty hidden file
$ ls               # this will output nothing
$ echo *           # this will echo a *
*

Эти файлы обычно называют «скрытыми», хотя они скрыты только от lsи шаблонов подстановки имен файлов, а не скрыты в смысле «секретных», вредоносных, полностью необнаружимых или нечитаемых. другими (, что зависит от разрешения файла и разрешения его родительской папки (s )).

Любой может создавать скрытые файлы, нужно просто поставить точку в начале имени. Тот факт, что файл скрыт, ничего не говорит о том, как он был создан (явно пользователем или при запуске какой-либо программы ). Некоторые приложения создают каталоги со скрытыми именами (для хранения конфигураций, файлов кэша и т. д. ), а другие создают скрытые файлы.

Например,

  • Оболочка bashчасто создает .bash_historyв вашем домашнем каталоге, содержащем команды, которые вы ввели в командной строке (, чтобы вы могли легко вызвать их в более позднем сеансе без повторного ввода ). Оболочка также будет использовать .bash_profileи .bashrcв вашем домашнем каталоге при запуске. Если эти файлы существуют, вполне вероятно, что они были скопированы в вашу учетную запись при ее создании.

  • Если вы используете SSH, то, скорее всего, у вас есть скрытый каталог с именем .sshв вашем домашнем каталоге. Этот каталог содержит открытые и закрытые ключи SSH, а также может содержать некоторый файл конфигурации. Этот каталог не должен быть доступен другим. Маловероятно, что вы создали этот каталог вручную.

  • Многие настольные утилиты хранят свои файлы конфигурации где-то в .configв вашем домашнем каталоге, а файлы кэша — в .cache. Опять же, маловероятно, что вы создали эти каталоги вручную.

Файлы конфигурации в домашних каталогах пользователей (и в других местах )часто скрываются таким образом, чтобы не загромождать вывод ls.

Чтобы просмотреть все файлы в каталоге, включая скрытые файлы, используйте опцию -aили -Aсls(при использовании -Aне будут отображаться имена .и .., которые присутствуют в любом Каталог Unix ).

$ ls -a
.      ..     .myfile
$ ls -A
.myfile

В оболочке bash, *и других шаблонах подстановки оболочки не будут соответствовать скрытым именам. Чтобы заставить их это сделать, включите параметр оболочки dotglobс помощью shopt -s dotglob.

$ echo *
*

$ shopt -s dotglob
$ echo *            # the * now matches a filename, so it is replaced by it
.myfile
9
28.01.2020, 05:06

Теги

Похожие вопросы