Попробуйте:
find /etc -type f -readable
Изman find
:
-readable
Matches files which are readable. This takes into account access control lists and other permissions artifacts which the -perm test ignores. This test makes use of the access(2) system call, and so can be fooled by NFS servers which do UID mapping (or root-squashing), since many systems implement access(2) in the client's kernel and so cannot make use of the UID mapping information held on the server.
Ограничение:Это не найдет файлы для чтения, если они находятся в каталоге, который не доступен для чтения. (Шляпный наконечник роайма .)
sort -u -t -k1.1,1.4 testfile
I interpret this version as -t followed by blank to mean that there is no field separator, however I suppose it could mean field separator is whitespace,
Ни то, ни другое. Токенизация аргументов, передаваемых программе в Unix, определяется оболочкой, а не программой; и в большинстве программ Unix с тех пор, если (ведущий аргумент, который является )опцией/флагом, требует значения, и вы не предоставляете его как часть того же аргумента, в качестве значения используется следующий аргумент. -t -k1.1,1.4
использует -k1.1,1.4
в качестве разделителя полей, усекая его до одного символа, а именно -
. В результате параметр -k
не распознается, поэтому выполняется сортировка с использованием определения ключа по умолчанию, которым является вся строка.
Сортировка GNU в этом случае выдает ошибку, говоря, что значение 'tab' (, т.е. значение-t
)является многозначным -символом; такое поведение более полезно, но не требуется ни традицией, ни стандартом. В SunOS -, также известной как -Solaris, утилиты не требуются, и многие из них на самом деле не соответствуют XPG -и -POSIX, если вы не укажете версию xpg4 или xpg6 --, не так ли? --но на моей (теперь виртуализированной )тестовой системе Solaris 10 и /usr/bin/sort
, и /usr/xpg4/bin/sort
имеют менее полезное -поведение.
Если вы хотите, чтобы символ пробела использовался в качестве разделителя полей --, что было бы бессмысленно для ваших данных, не содержащих пробелов --, вам нужно сообщить оболочке ] для передачи символа пробела либо как часть аргумента -t
, либо как дополнительный аргумент:
sort -t" " -k1.1,1.4
sort -t' ' -k1.1,1.4
sort -t\ -k1.1,1.4
sort "-t " -k1.1,1.4
sort '-t ' -k1.1,1.4
sort -t " " -k1.1,1.4
sort -t ' ' -k1.1,1.4
sort -t \ -k1.1,1.4
Обратите внимание, что в системах типов Unix -(независимо от того, является ли Unix -торговой маркой, которой SunOS изначально не была )«пробел» обычно означает не только символ пробела; обычно он включает как минимум пробелы и (горизонтальные )символы табуляции , а также часто «вертикальные» пробелы, такие как LF, VT, FF. Стандарт sort
может использовать только один символ в качестве разделителя полей, так что это не может быть пробел. В отличие от оболочки,и awk (по умолчанию ), анализируйте поля, используя несколько пробелов.