+ Xargs: টার্গেট সহ ফাইলগুলি সরানো: লক্ষ্যটি কোনও ডিরেক্টরি নয়?


9

যখন আমি নিম্নলিখিত কমান্ডটি চালিত করি:

> mkdir some_dir
> find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} some_dir

আমি শত শত লাইন পেয়েছি যা বলে:

mv: target `/foo/bar/XX.csv` is not a directory

কেন? আমি ভেবেছিলাম xargs কার্যকর করা হবে:

mv /foo/barXX.csv some_dir

findখুঁজে পাওয়া প্রতিটি ফাইলের জন্য । কি হচ্ছে? যাইহোক, এটি zsh এর সাথে

হালনাগাদ:

Update1:

আমি চেষ্টা করেছিলাম:

find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} -t some_dir

তবে তারপরে আমি কয়েকটি লাইন পেয়েছি:

mv: cannot stat `{}': No such file or directory

যদিও আমি মনে করি কমান্ডটি আমার ফাইলগুলি সঠিকভাবে সরিয়ে নিয়েছে।

Update2:

একা -tব্যবহার করার সময় আমার বিকল্পের দরকার হবে বলে মনে হয় mvনা। উদাহরণ স্বরূপ

> touch file1.txt
> touch file2.txt
> mkdir my_dir
> mv  file1.txt  file2.txt  my_dir

ভাল কাজ করে. কেন আমি -tব্যবহার করার প্রয়োজন xargs?

উত্তর:


14

ধরে নিই আপনার কাছে জিএনইউ ( find,, xargsএবং mv) রয়েছে, আপনার আদেশটি এটিতে পরিবর্তন করুন:

$ find /foot/bar/ -name '*.csv' -print0 | xargs -0 mv -t some_dir

ম্যান পৃষ্ঠা থেকে উদ্ধৃতিmv

   -t, --target-directory=DIRECTORY
          move all SOURCE arguments into DIRECTORY

উপরের xargs ...কমান্ডটি তৈরি করবে যাতে সরানোর জন্য কলগুলি এরকম হবে:

 $ mv 1.csv 2.csv 3.csv ... -t some_dir

এক্সার্গসের দরকার নেই

কেবলমাত্র findসমস্ত কাজ নিজেই করে আপনি এই পদ্ধতিকে এড়িয়ে যেতে পারেন :

$ find /foot/bar/ -name '*.csv' -exec mv -t some_dir {} +

তোমার দরকার কেন mv -t ...?

এটি যে xargsপদ্ধতিটি এটি প্রতিবার চালাতে চলেছে কমান্ডটি পাস করার জন্য ফাইলগুলির সেট তৈরি করছে তার সাথে এটি করতে হবে (যেমন mv ...)।

আপনি যখন mvকমান্ডটি ম্যানুয়ালি চালনা করেন আপনি নিজেই নিয়ন্ত্রণ করেন যে এতে কতগুলি ফাইল নাম দেওয়া হয়েছে এবং তাই আপনাকে প্রয়োজনের বিষয়ে চিন্তা করার দরকার নেই -t my_dirকারণ আপনি সর্বদা গন্তব্য ডিরেক্টরিটি শেষ রাখবেন।

তথ্যসূত্র


ধন্যবাদ! এটি খুব সহায়ক। যদিও আমি কিছুটা বিভ্রান্ত হয়েছি (আমার আপডেট দেখুন)
আমেলিও ওয়াজকেজ-রেইনা

1
বিল্ট কমান্ড mv -t some_dir 1.csv 2.csv 3.csv ...তাই ফাইল আর্গুমেন্ট শেষ। এটি প্রশ্নে ত্রুটি, ব্যবহার করার জন্য {}আপনাকে পাস -I {}করতে হবে xargs
frostschutz

ধন্যবাদ। যা সবকিছু ব্যাখ্যা করে। আপডেট 2 এ আমার দ্বিতীয় প্রশ্নটি কী ছিল? আপনি কি জানেন যে আমাকে কেন -tএকাধিক ফাইল এবং নিয়মিত একটি ডিরেক্টরি প্রয়োজন হয় না mv?
আমিলিও ওয়াজকেজ-রেইনা

1
@ ব্যবহারকারী 815423426 - আজ রাতে যখন আমি সুযোগ পাব তখন আমি এটি পরে আপডেট করব, কেন তা আমি জানি।
slm

@ ব্যবহারকারী 815423426 - আমি প্রশ্নটি আপডেট করেছি, যদি তা বোধগম্য হয় তবে আমাকে জানান mv -t
slm

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.