Для вывода содержимого всех обычных файлов в текущем каталоге, имя которых содержит символ a
:
find. ! -name. -prune -name '*a*' -type f -exec cat {} +
Хотя с несколькими find
реализациями (, включая GNU на вашей Ubuntu ), это исключит файлы, имена которых содержат последовательности байтов, которые не образуют допустимые символы в текущей локали.
В некоторых реализациях find
вместо стандартного ! -name. -prune
можно использовать -depth 1
. Некоторые другие (, такие как GNU find
), имеют -mindepth 1 -maxdepth 1
(, хотя -maxdepth 1
здесь достаточно, поскольку глубина 0 равна .
, что исключается как -type f
, так и-name '*a*'
).
Проблема недопустимых символов может быть устранена с помощью zsh
и :
cat./*a*(D.)
Это также имело бы преимущество, сообщая об ошибке, если нет соответствующего файла, и сортируя список файлов, чтобы вывод был менее случайным.
Если вы также хотите включить символические ссылки на обычные файлы,добавьте опцию -L
к find
или -
в квалификаторе zsh glob.
Если вы хотите исключить скрытые файлы, добавьте ! -name '.*'
к find
или удалите D
из квалификатора glob zsh.
Обратите внимание, что cat
объединяет эти файлы. Если a1
содержит foo
без завершающего символа новой строки (, чего не должно было бы происходить, если бы a1
был правильным текстовым файлом ), а a2
содержал bar
, вывод будет foobar
.
Чтобы включить имена файлов, вы можете использовать grep '^' /dev/null
вместо cat
, что будет добавлять к каждой строке имя файла. Или grep -n '^' /dev/null
, чтобы также включить номера строк.
С реализацией GNU head
(, найденной в вашей Ubuntu ), вы можете использовать head -vc-0
, который добавит
===>./file_with_a <===
заголовок и пустая строка между файлами.
Ваша запись sudoers дает user01 полные права sudo , что означает, что вам все равно нужно запускать каждую команду через sudo. Если вы хотите только предоставить user01 права на изменение/сброс пароля user02 , добавьте его в свой /etc/sudoers
файл (черезvisudo
):
user01 ALL=(ALL:ALL) NOPASSWD: /usr/bin/passwd user02
Затем пусть user01 запустит sudo passwd user02
.