Лучший способ вывести список только тех файлов, которыми я владею

На CentOS, никаких дополнительных зависимостей не требуется:

$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"
6
12.04.2017, 05:00
5 ответов

Короткая однострочная строка будет следующей:

find . -maxdepth 1 -user $USER

Если вы ищете в текущем каталоге, вы можете опустить . . Если вы не знаете, доступен ли $USER, вы можете заменить его на $LOGNAME или $(whoami).

Добавьте -ls для отображения сведений о файле, например:

find / -maxdepth 1 -user root -ls

Если вы хотите предоставить пользовательские флаги ls, вы можете использовать его через -exec:

find / -maxdepth 1 -user root -exec ls -ld {} +

(В этом случае -d флаг для ls требуется для указания каталогов как самих себя, а не их содержимого.)

9
27.01.2020, 20:25
for i in ./*; do [ -f "$i" ] && [ -O "$i" ] && echo "$i"; done

find . ! -name . -prune -user "$(who -m)" -type f

Это два способа перечисления простых файлов в текущем каталоге, которым вы владеете.

0
27.01.2020, 20:25

Поскольку вы не указали формат вывода, вы также можете сделать это с помощью ls и grep:

ls -lG | grep username

Сначала мы используем ls с параметром -l, чтобы получить листинг, включающий имя пользователя и groupname.

Затем мы удаляем имя группы из результата с помощью параметра -G.

После этого мы просто передаем его в grep и получаем все результаты с нужным именем пользователя.

EDIT: Как отмечалось в комментариях, это не безопасное или пуленепробиваемое решение - однако, в зависимости от ваших обстоятельств, оно может быть быстрым и грязным. В интерактивном режиме это может быть приемлемо, но вы не должны использовать это ни в каких скриптах!

1
27.01.2020, 20:25

С помощью zsh это можно сделать с помощью квалификатора glob u :

u id

файлов, принадлежащих идентификатору пользователя id , если это число. В противном случае id указывает имя пользователя: символ после « u » будет использоваться как разделитель и строка между ним и следующим совпадающим разделителем будет принято как имя пользователя. Начальные разделители « [», « {]» и « <» совпадают. заключительные разделители '] ', '} ' и '> ' соответственно; любой другой символ совпадает с самим собой. Выбранные файлы принадлежат этому Пользователь. Например, « u: foo: » или « u [foo] » выбирают файлы, принадлежащие пользователю. ' foo '.

так, например, с идентификатором пользователя

print -rl ./*(u1027)

или именем пользователя

print -rl ./*(u_yourusernamegoeshere_)

Как обычно, вы можете комбинировать его с другими квалификаторами, модификаторами и т. д., например для вывода списка только обычных файлов, скрытых или нет, принадлежащих пользователю с UID 1027 и отсортированных по их mtime :

print -rl ./*(.Domu1027)
0
27.01.2020, 20:25

Используйте приведенную ниже команду

[username@localhost~]$ find / -user username -exec ls -l {} \; 2>/dev/null

, чтобы найти все файлы во всей системе, принадлежащие пользователю. Если вы найдете в определенном каталоге, просто замените местоположение / .

[username@localhost~]$ find /path/of/direcotry -user username -exec ls -l {} \; 2>/dev/null

NB:2>/dev/null аннулирует вывод ошибки.

4
27.01.2020, 20:25

Теги

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