Чтобы перечислить имена в одном каталоге (, т. е. не рекурсивно ), которые содержат не менее трех символов, вы можете использовать любой из шаблонов подстановки *???
, ???*
или *???*
. Каждый ?
соответствует одному символу, а *
соответствует любому количеству символов.
Чтобы перечислить такие имена в /etc
с помощьюls
:
ls -ld /etc/*???
или просто
printf '%s\n' /etc/*???
Если вы хотите перечислить имена, которые заканчиваются тремя определенными символами (, например. xyz
), затем используйте *xyz
в качестве шаблона.
Для рекурсивного поиска таких имен вы можете (вbash
)использовать shopt -s globstar
, чтобы включить **
шаблон подстановки (для рекурсивного поиска в подкаталогах ), а затем...
ls -ld /etc/**/*???
Шаблон **
включен по умолчанию в оболочке zsh
.
Чтобы сделать что-нибудь с этими именами (, кроме простого вызова ls
), используйте цикл:
shopt -s globstar
for pathname in /etc/**/*???; do
# use "$pathname" to do something
done
В оболочке dash
или простом sh
эквивалентом этого цикла будет
find /etc -name '*???' -exec sh -c '
for pathname do
# use "$pathname" to do something
done' sh {} +
Связанные:
Использование вами grep
показывает, что вы путаете регулярные выражения с шаблонами подстановки имен файлов. В регулярном выражении точка(.
)соответствует любому одному символу, а ?
соответствует только символу ?
(, по крайней мере, в основных регулярных выражениях, что grep
использует по умолчанию ).
Шаблоны имен файлов также всегда привязаны, поэтому нет необходимости явно привязывать шаблон с помощью $
, поскольку в регулярном выражении (шаблон должен соответствовать полному имени файла, поэтому xyz
точно соответствует этому имени, в то время как *xyz
соответствует любому имени файла, оканчивающемуся на xyz
).
Связанные:
Я смог понять проблему. Материального ущерба нет. Проблема была упомянута в сообщении Reddit, таком как этот :https://www.reddit.com/r/archlinux/comments/ax6mga/arch_cant_find_my_nvme_disk/, и объяснено здесь, напримерhttps://wiki.archlinux.org/index.php/Dell_XPS_13_2-in-1_(9365).
После первого перезапуска я подозреваю, что в BIOS произошло что-то вроде сброса до заводских настроек, и параметр контроллера SATA был установлен на RAID
, что примерно означает :BIOS разрешено видеть жесткий диск -, но не ОС. Установив для этой опции значение AHCI
, все заработало как обычно.