সমস্ত অস্তিত্ব নেই এমন ফাইলগুলির একটি তালিকা তৈরি করুন


10

আমি যেমন একটি স্ক্রিপ্ট থেকে একটি কমান্ড চালাচ্ছি

tar -c -f ar.tar a b c d

যেখানে বি, সি, এবং ডি বিদ্যমান থাকতে পারে না এবং এটি ডিরেক্টরি হতে পারে। আমি যে সমাধানগুলি নিয়ে এসেছি তা হ'ল আউটপুটটি পাইপ ls -dকরা grep, তারপরে এটি tarকমান্ডে ছড়িয়ে দেওয়া , বা এর জন্য বর্ধিত গ্লোবগুলি চালু করা @(a|b|c|d)

এটি করার একটি সুস্পষ্ট উপায় আছে? আমি ডেবিয়ান হুইজিতে আছি, যার কোনও --includeপ্যারামিটার নেই বলে মনে হচ্ছে ।


আপনার কি --ignore-failed-readবিকল্প আছে?
কস্টাস

1
এটি চেষ্টা করে, তবুও ফাইলগুলির জন্য একটি ত্রুটি দিয়েছে যা একেবারেই নেই।
gidyn

1
হ্যাঁ, ত্রুটি বার্তা উপস্থিত থাকলেও সংরক্ষণাগার তৈরি হয়।
কস্টাস

উত্তর:


8

আপনি চেষ্টা করতে পারেন

 tar cf ar.tar $(ls a b c d )

কোথায়

  • c তৈরি করার জন্য
  • f ar.tar টার ফাইল নির্দিষ্ট করুন

  • $(ls a b c d) কোন ফাইলটি সত্যিকারের উপস্থিত রয়েছে তা স্টিনকে তালিকাবদ্ধ করবে (এবং অন্যের জন্য ত্রুটি দেবে)


2
tar cf ar.tar $(ls -d a b c d 2>/dev/null)নিখুঁতভাবে কাজ করে .. তবে আমি মনে করি এটি এক্সট্র্লোব দিয়ে পরিষ্কার
gidyn

এখন আমি স্ক্রিপ্টটি ড্যাশ করার জন্য পোর্ট করছি, তাই না extglob- আমি আমার মন্তব্যে কোডটি ব্যবহার করছি
gidyn

1

যদি টার সংরক্ষণাগারটিতে ফাইলগুলির পুরো পথটি রাখা ঠিক থাকে তবে আপনি এটি করতে পারেন:

tar -c -f ar.tar $(readlink -e a b c d)

-eReadlink করার অপশন বিদ্যমান ফাইলের নামের canonicalize করবে এবং নিঃশব্দে কোনো অন্যদের উপেক্ষা করি।


আমি অনুমান করি যে আমি যদি --strip-componentsনিষ্কাশন করার সময় কাজ করতে পারি ।
gidyn

0

ব্যবহার

find path/to/dir -name "*.ext1" -o -name "*.ext2"

ব্যাখ্যা

  1. প্রথম প্যারামিটারটি ডিরেক্টরিটি আপনি অনুসন্ধান করতে চান।
  2. ডিফল্টরূপে findপুনরাবৃত্তি করে।
  3. এর -oঅর্থ দাঁড়ায় -or। সুতরাং উপরের অর্থ এই ওয়াইল্ডকার্ড বা এটির জন্য অনুসন্ধান করুন। আপনার যদি কেবল একটি প্যাটার্ন থাকে তবে প্রয়োজন নেই -o
  4. ওয়াইল্ডকার্ড প্যাটার্নের চারপাশে উদ্ধৃতিগুলি প্রয়োজনীয়।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.