Linux, поиск значения расширенного атрибута

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

$ getfattr -d *
# file: file1
user.comment="comment1"

# file: file2
user.comment="comment2"

Это должно работать для всех дистрибутивов Linux.

Возможно ли это перечислить только файлы, расширенный атрибут user.comment которых имеет определенное значение, например comment1 ? Если да, то как?

0
задан 20 June 2017 в 19:44
2 ответа

Попробуйте ввести getfattr -n user.comment --only-values ​​* | grep -B 1 «comment1»

Это отобразит значения user.comment для всех файлов и отфильтрует вывод с помощью grep . Вы, конечно, можете использовать более сложные подходы, например, с помощью find -exec

0
ответ дан 5 December 2019 в 07:58

Один из способов — сбросить расширенные атрибуты в файл и затем используйте 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 (на греческом языке).

0
ответ дан 16 August 2020 в 21:55

Теги

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