이 명령의 기능을 설명할 수 있습니까?
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[@]}
.