Linux,搜索扩展属性值

Linux,搜索扩展属性值

当目录中包含一些具有非空扩展属性的文件时,其所有属性值可以表示如下:

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

# file: file2
user.comment="comment2"

这应该适用于所有 Linux 发行版。

是否可以仅列出扩展属性具有特定值的文件user.comment?例如comment1?如果可以,怎么做?

答案1

尝试发出getfattr -n user.comment --only-values * | grep -B 1 "comment1"

这将显示user.comment所有文件的值并使用 过滤输出grep。当然,您可以使用更复杂的方法,例如使用find -exec

答案2

一种方法是将扩展属性转储到文件,然后使用 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(希腊语)。

相关内容