글쎄, -i
스위치는 더 이상 사용되지 않습니다.
-i[replace-str]
This option is a synonym for -Ireplace-str if replace-str is specified.
If the replace-str argument is missing, the effect is the same as -I{}.
This option is deprecated; use -I instead.
그래서 당신의 명령을 이것으로 바꾸었을 때, 그것은 효과가있었습니다 :
$ find /foo/bar -name '*.mp4' -print0 | xargs -I{} -0 mv -t /some/path {}
예
$ find . -print0 | xargs -I{} -0 echo {}
.
./.sshmenu
./The GIT version control system.html
./.vim_SO
./.vim_SO/README.txt
./.vim_SO/.git
./.vim_SO/.git/objects
./.vim_SO/.git/objects/pack
./.vim_SO/.git/objects/pack/pack-42dbf7fe4a9b431a51da817ebf58cf69f5b7117b.idx
./.vim_SO/.git/objects/pack/pack-42dbf7fe4a9b431a51da817ebf58cf69f5b7117b.pack
./.vim_SO/.git/objects/info
./.vim_SO/.git/refs
./.vim_SO/.git/refs/tags
...
사용 -I{}
이 명령 구문을 실행 한 이후에는이 방법을 사용하지 않아야합니다.
$ find -print0 ... | xargs -I{} -0 ...
암시 적으로 이러한 스위치를 켭니다 xargs
, -x
그리고 -L 1
. -L 1
를 구성하고는 xargs
이 명령을 부르고 그래서 당신은 하나의 방식을 통해 파일을 실행합니다.
xargs
1000 파일을 주면 mv
명령을 1000 번 실행할 것이기 때문에 여기서는 사용 목적을 상실합니다 .
그렇다면 어떤 접근법을 사용해야합니까?
다음과 같이 xargs를 사용하여 수행 할 수 있습니다.
$ find /foot/bar/ -name '*.mp4' -print0 | xargs -0 mv -t /some/path
또는 그냥 모든 것을 찾으십시오.
$ find /foot/bar/ -name '*.mp4' -exec mv -t /some/path {} +
"This approach shouldn't be used"
그렇다면 어떤 접근법을 대신 사용해야한다고 말했 을 때 ? 시겠습니까"find /foot/bar/ -name '*.csv' -print0 | xargs -0 mv -t some_dir'"
더 나은 솔루션이 될? 그렇다면, 어떻게 않습니다xargs
이 경우 알고mv
는 파이프에서 얻는 인수에 피드 명령? (항상 그것들을 마지막에 배치합니까?)