ফাইলের তালিকায় ফাইলটি সরান (শীর্ষস্থানীয় সাদা জায়গা সহ)


12

আমার একটি ফাইল রয়েছে যাতে ফাইলের নাম থাকে। উদাহরণ স্বরূপ:

/tmp/list.txt (এটি প্রতিটি লাইনের শুরুতে ফাঁকা স্থানগুলির সাথে রয়েছে):

  /tmp/file.log
  /app/nir/home.txt
  /etc/config.cust

আমি একটি লাইন ব্যবহার করে তালিকাভুক্ত সমস্ত ফাইল সরিয়ে /tmp/list.txtনিতে চাই/app/dest

সুতরাং এটি এর মতো কিছু হওয়া উচিত:

cat /tmp/list.txt | xargs mv /app/dest/

উত্তর:


21

আপনি কেবল (জিএনইউ অনুমান করে ) -tবিকল্পটি হারিয়েছেন :mvmv

cat /tmp/list.txt | xargs mv -t /app/dest/

বা আরও সংক্ষিপ্ত (এক্স টিয়ান এর উত্তর দ্বারা অনুপ্রাণিত):

xargs mv -t /app/dest/ < /tmp/list.txt

নেতৃস্থানীয় (এবং সম্ভাব্য ট্রেলিং) স্পেসগুলি সরানো হয়েছে। ফাইলের নামগুলির মধ্যে থাকা স্পেসগুলি সমস্যার সৃষ্টি করবে।

আপনার জিএনইউ ধরে নিতে xargsপারেন যে ফাইল নামগুলিতে আপনার কাছে ফাঁকা জায়গা বা ট্যাব বা কোট বা ব্যাকস্ল্যাশ রয়েছে :

sed 's/^ *//' < /tmp/list.txt | xargs -d '\n' mv -t /app/dest/

উত্তরের জন্য ধন্যবাদ . এর সাহায্যে আমি তাদের নামে [!] দিয়ে প্রচুর ফাইলের একটি তালিকা তৈরি করতে পারি এবং অনুসরণ করে অন্য ফোল্ডারে যেতে পারি: ls | গ্রেপ -ই "। [!]]" | টি 001.txt; সেড 's / ^ * //' <001.txt | xargs -d '\ n' এমভি -টি / ডেসটিনিপথ /
inukaze

6

ধরে নিচ্ছি আপনার ফাইলের নাম তুলনামূলকভাবে বুদ্ধিমান (কোনও নতুন লাইনের বা অদ্ভুত অক্ষর নয়):

while read file; do mv "$file" /app/dest/; done < list.txt 

অদ্ভুত ফাইল নামগুলি মোকাবেলা করতে (কোনও ফাইলের নামের একটি নতুন লাইন থাকলে বিরতি):

while IFS= read -r file; do mv "$file" /app/dest/; done < list.txt 

হাই টার্ডন, সিএসভি ফাইলে তাদের মিলের ভিত্তিতে ফোল্ডারগুলিকে কীভাবে নতুন ডিরেক্টরিতে স্থানান্তরিত করবেন? আপনি কি এই আমাকে সাহায্য করতে পারেন [ unix.stackexchange.com/questions/433068/… ধন্যবাদ !!
user3351523

@ user3351523 আপনার প্রশ্নটি বন্ধ করা হয়েছে। সহায়তার জন্য এলোমেলো লোকদের জিজ্ঞাসা করা এটি পরিবর্তন করবে না। পরিবর্তে, প্রশ্নটি সম্পাদনা করুন এবং ডুপ্লিকেটের সমাধানগুলি আপনাকে কীভাবে সহায়তা করে না তা ব্যাখ্যা করুন। যদি কিছু "কাজ করে না", তবে এটি কীভাবে ব্যর্থ হয়েছিল তা ব্যাখ্যা করুন। সমাধানগুলি আপনার পক্ষে কাজ করা উচিত, সুতরাং আপনি যখন তাদের চেষ্টা করেন তখন কী হয় তা আপনাকে ব্যাখ্যা করতে হবে।
টেরডন

আমি ওটা করেছিলাম. আপনি দেখতে পারেন।
user3351523

@ user3351523 আপনি কেন ডুপের সমাধানগুলি আপনার জন্য ব্যর্থ হন তা ব্যাখ্যা করেন নি। এবং আপনি যে উত্তরগুলি পেয়েছেন তা কীভাবে ব্যর্থ হয়েছে তা আপনি ব্যাখ্যা করেন নি। আপনার কেবল ব্যবহারের প্রয়োজন হতে পারে cp -Hrতবে ওএসএক্স cpসমর্থন করে কিনা তা আমি জানি না ।
টেরডন


1

খালি খালি xargs ফাইল থেকে সরাসরি পড়া

xargs -l -i < flist  mv -v {} /app/dst

1 সম্পাদনা করুন - নীচে @ অ্যানথনের মন্তব্যের পরে,

xargs -I{} < flist  mv -v {} /app/dst

1
-ideprecrated, এবং এটি, অথবা এটি প্রতিস্থাপন -আমি পরোক্ষভাবে -l/ --max-lines=1। এবং এটি mvপৃথকভাবে প্রতিটি ফাইলের জন্য কার্যকর করা হয়।
অ্যান্থন

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