xargs -I 명령의 목적은 무엇입니까?

xargs -I 명령의 목적은 무엇입니까?

이 명령의 기능을 설명할 수 있습니까?

files=(this_is_filename)
for filename in ${files[@]}; do 
  ls -t1 ../htory/$filename* |
    head -1 |
    xargs -I fname cp -p fname ../htory2/somefile.CSV
done

특히 이 명령 부분은

xargs -I fname cp -p fname ../htory2/somefile.CSV

답변1

xargs입력을 매개변수로 변환합니다. 이 -I옵션은 매개변수 자리 표시자로 사용할 문자열을 지정합니다. 따라서 파이프라인 출력이 다음과 같다면

file1
file2

이 줄은 다음 xargs으로 변환됩니다.

cp -p file1 ../htory2/somefile.CSV
cp -p file2 ../htory2/somefile.CSV

그러나 고유는 하나의 행을 반환하므로 대신 사용하면 실제 이점을 head -1볼 수 없습니다 .xargs

cp -p "$(ls -t1 ../htory/$filename* | head -1)" ../htory2/somefile.CSV

또한 대상 파일은 항상 동일하므로 .txt의 마지막 파일로 덮어쓰여집니다 ${files[@]}.

관련 정보