あるコマンドの出力を別のコマンドにパラメータとして渡す方法を見つけるのに問題があります。
特にFreeBSDのファイルの拡張属性のリストを渡したいと思います。lsextattr、出力を次に渡します。rextattrすべての拡張属性を削除します。はい、rmextattrには再帰オプションがないため、これを行う必要があります。
私はこのようなことを試していますが、運がありません。
# lsextattr -q user some_file.txt | rmextattr user "$1" some_file.txt
rmextattr: some_file.txt: failed: Attribute not found
lsextattrが正しく機能しているようですが、出力はrmextattrに正しく渡されません。
# lsextattr -q user some_file.txt
DosStream.com.apple.lastuseddate#PS:$DATA DosStream.AFP_AfpInfo:$DATA
助けて......
答え1
IIUCでは、rmextattr
一度に1つの拡張属性しか取得できません。したがって、返された拡張属性を繰り返して、lsextattr
次のようにそれぞれを削除する必要があります。
for attr in $(lsextattr -q user some_file.txt) ;do
rmextattr user $attr some_file.txt
done
(テストされていません。現在FreeBSDシステムにアクセスできません。)
コメントの質問に答えてください。
for file in $(find ...) ;do
for attr in $(lsextattr -q user $file) ;do
rmextattr user $attr $file
done
done
考慮したいファイルの基準が何であるかはわかりませんが、目的のfind
リストが得られるまで実験してから、結果コマンドを$(find ...)
外部ループ部分に挿入できます。