当目录中包含一些具有非空扩展属性的文件时,其所有属性值可以表示如下:
$ 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(希腊语)。