ব্যাশ লুপে কোনও ফাইল বাদে


10

নিম্নলিখিত স্ক্রিপ্টে, আমি কীভাবে লুপের একটি ডিরেক্টরি বাদ দেব? আমি এটি করতে চাই কারণ সমস্ত ফাইল একই ডিরেক্টরিতে বিদ্যমান এই ডিরেক্টরিকে নির্দেশ করে সিমলিঙ্কস, তাই আমি এটি যুক্ত করতে চাই না।


cd /var/www
for dir in */
do
        base=$(basename "$dir")
        tar -czfh "${base}.tar.gz" "$dir"
done

উত্তর:


13

আপনি continueএই মত একটি বিবৃতি যোগ করতে পারেন :

cd /var/www
for dir in */
do
        if [ "$dir" == "foo" ] ; then
              continue;
        fi
        base=$(basename "$dir")
        tar -czfh "${base}.tar.gz" "$dir"
done

অথবা আপনি এটি findআদেশ সহ করতে পারেন :

find /var/www -maxdepth 1 -type d \( -name foo \) -prune -o -print -exec bash -c "tar -czfh \`basename {}\`.tar.gz {}" \;

7

আপনি সক্রিয় করতে হবে extglobযদি এটি ইতিমধ্যেই সক্ষম নয় (এই জন্য shopt -s extglob):

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