한 명령의 출력을 다른 명령에 매개 변수로 전달하는 방법을 찾는 데 문제가 있습니다.
특히 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
한 번에 하나의 확장 속성만 얻을 수 있습니다. 따라서 반환된 확장 속성을 반복 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 ...)
외부 루프 부분에 삽입할 수 있습니다.