사람들 xargs
이 find와 함께 사용하는 이유 는 여러 파일 이름이 프로그램이 xargs
시작될 때마다 동일한 프로그램 호출로 전달되기 때문 입니다. 예를 들어 foo , bar 및 bazfind
파일을 반환 하면 다음이 한 번만 실행 됩니다.mv
find sourceDir [...] -print0 | xargs -0 mv -t destDir
효과적으로 mv
다음과 같이 호출됩니다 .
mv -t destDir foo bar baz
당신이 할 필요는 없다을하거나 (여기의 경우 가정으로)이 동작을 원한다면, 당신은 간단하게 사용할 수있는 find
'들 -exec
.
이 경우 쉬운 해결책은 다음과 같이 짧은 쉘 스크립트를 작성하는 것입니다.
#!/usr/bin/env bash
[[ -f "$1" ]] || { echo "$1 not found" ; exit 1 ; }
P="$1"
F="$( basename $P )"
ffmpeg -i "$P" -f flv "$F"
다른 이름으로 저장 myffmpeg.sh
하고 실행하십시오 chmod +x myffmpeg.sh
. 그런 다음 다음을 실행하십시오.
find . -iname "*.mov" -exec /path/to/myffmpeg.sh {} \;
발견 된 모든 파일에 대해 쉘 스크립트를 한 번 호출합니다. 쉘 스크립트는 전체 경로에서 파일 이름을 추출 ffmpeg
하고 적절한 인수를 사용하여 호출 합니다.
xargs
일반적으로 여러 인수에 대한 답변을 찾고 있기 때문에이 질문에 걸림돌이되는 사람들은 stackoverflow.com/questions/3770432/… 을 확인하고 싶을 수도 있습니다 .