Когда каталог содержит файлы с непустыми расширенными атрибутами, все значения атрибутов могут быть показаны следующим образом:
$ getfattr -d *
# file: file1
user.comment="comment1"
# file: file2
user.comment="comment2"
Это должно работать для всех дистрибутивов Linux.
Можно ли перечислить только те файлы, user.comment
расширенный атрибут имеет определенное значение, например comment1
? Если да, то как?
Один из способов - сбросить расширенные атрибуты в файл, а затем использовать 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/ektetamenes-idiothtes-archeiwn/2379 (по-гречески).
Попробуйте выпустить getfattr -n user.comment --only-values * | grep -B 1 "comment1"
Это отобразит user.comment
значения всех файлов и отфильтруйте вывод с помощью grep
. Конечно, вы можете использовать более сложные подходы, например, с find -exec