ভাল একটি জিনিসের জন্য -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
আর্গুমেন্ট এটা নল থেকে পায় ফিড কমান্ড? (এটি কি সর্বদা তাদের সর্বশেষে রাখে?)