Когда каталог содержит файлы с непустыми расширенными атрибутами, все значения атрибутов могут быть показаны следующим образом:
$ getfattr -d *
# file: file1
user.comment="comment1"
# file: file2
user.comment="comment2"
Это должно работать для всех дистрибутивов Linux.
Возможно ли это перечислить только файлы, расширенный атрибут user.comment
которых имеет определенное значение, например comment1
? Если да, то как?
Попробуйте ввести getfattr -n user.comment --only-values * | grep -B 1 «comment1»
Это отобразит значения user.comment
для всех файлов и отфильтрует вывод с помощью grep
. Вы, конечно, можете использовать более сложные подходы, например, с помощью find -exec
Один из способов — сбросить расширенные атрибуты в файл и затем используйте awk
getfattr --dump * > xfatrrts.txt
или с функцией bash
ea_query() {
a=$1; v=$2
shift 3
getfattr -n $a $* |
awk "BEGIN {
RS="# file: "
FS="n"
}/="$v"/ { print $1 }"
}
,а затем
cp `ea_query user.important yes *.txt` important_texts/
в zsh
fattr() {
local val=$(getfattr -e text -n user.$1 --only-values $REPLY 2>/dev/null)
[[ -n $val && ( -z $2 || $val = $2 ) ]]
}
и затем
ls *(e:fattr year 2020:)
Здесь вы найдете несколько других решений https://linux-user.gr/ t/ektamenes-idiothtes-archeiwn/2379 (на греческом языке).