ফাইলের নাম থেকে ওএস এক্স ফরোয়ার্ড স্ল্যাশ সরান


0

হাই আমি আমার সমস্ত ফাইল থেকে সমস্ত ফরোয়ার্ড স্ল্যাশগুলি সরাতে চাই, তবে এটি একটি প্রধান ডিরেক্টরিতে প্রতিটি ডিরেক্টরিতে পুনরাবৃত্তভাবে করুন।

আমাকে কীভাবে এই স্ক্রিপ্টটি সংশোধন করতে হবে, যা পুনরাবৃত্তি করে না?

for f in "$1"/*; do
dir="$(dirname "$f")"
file="$(basename "$f")"
mv -- "$f" "${dir}/${file//[^_-0-9A-Za-z.]}"
done

বা আরও ভাল আমি কেবল ফাইলের নামগুলিতে একটি ফরোয়ার্ড স্ল্যাশ প্রতিস্থাপন করতে চাই তবে এটি মূল ফোল্ডারের প্রতিটি সাবফোল্ডারের জন্য?

অভিবাদন সর্বাধিক

উত্তর:


0

বিএসডি স্তরটিতে একটি ফরোয়ার্ড স্ল্যাশ হ'ল পথ বিভাজক। যখন আপনি একটি ফরোয়ার্ড স্ল্যাশের সাথে কোনও ফাইলের নামের মুখোমুখি হন তখন কার্নেল ফরোয়ার্ড /স্ল্যাশটিকে একটি কোলনকে অনুবাদ করে :। সুতরাং, ফাইন্ডার অ্যাপ্লিকেশনটিতে একটি ফাইলের নাম দেখতে পারে foo/barতবে বিএসডি স্তরটিতে এটি দেখতে দেখতে ভাল লাগে foo:bar

সুতরাং, ডিরেক্টরি ট্রি হাঁটতে তাদের নামের findসাথে ফাইলগুলি সনাক্ত করতে ব্যবহার করুন :। তারপরে, -execdirফাইলের নাম থেকে কলোনগুলি (ফাইন্ডার অ্যাপ্লিকেশনে ফরোয়ার্ড স্ল্যাশগুলি) সরাতে একটি ইনলাইন স্ক্রিপ্ট ব্যবহার করুন।

find . -type f -name '*:*' -execdir bash -c ' for file
    do
        echo mv -- "${file}" "${file//:}"
    done' sh {} \;

এটি কেবল mvকমান্ড এবং অপারেশনগুলি তালিকাভুক্ত করবে । আপনি যদি অনুভব করেন যে আউটপুট আপনাকে আপনার পছন্দসই ফলাফল দেবে তবে অপসারণ করুন echo

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