পথ থেকে ডিরেক্টরি নিষ্কাশন


123

আমার স্ক্রিপ্টে আমার যে ফাইলটি নিয়ে কাজ করছি তার ডিরেক্টরি প্রয়োজন । উদাহরণস্বরূপ, ফাইল = "স্টাফ / ব্যাকআপ / ফাইল.জিপ" । ভেরিয়েবল থেকে স্ট্রিং " স্টাফ / ব্যাকআপ / " পাওয়ার জন্য আমার একটি উপায় দরকার $file।

উত্তর:


203
dirname $file

আপনি যা খুঁজছেন তা


+1, আমাকে এটি মারধর। দ্রুততর হতো কিন্তু চেয়ে বেশি প্রবেশ করতে prompoted ছিলdirname $file
— matchew

1
dirname "$file"বরং। উদ্ধৃতি ব্যতীত ফাইল বা ডিরেক্টরিটির নামের ফাঁকা থাকলে এটি দুর্ব্যবহার করবে।
— চার্লস ডাফি 21'18

এফএমএল, প্রশ্নটি ফাইল থেকে নিখুঁত দির বের করা উচিত, আমি কীভাবে এটি করব? ডেরনামটি অনুমান করে তুলনামূলকভাবে পথ দেয়
— আলেকজান্ডার মিলস

উইন ব্যাচের স্ক্রিপ্টে এটি অর্জন করা কতটা কঠিন তা অসামান্য! এগুলি ব্যবহার না করার আরেকটি কারণ আমার ধারণা!
— বুঙ্কারডিভ

47
dirname $file

আউটপুট হবে

stuff/backup

যা এর বিপরীত basename:

basename $file

আউটপুট হবে

file.zip

আমি মূর্ত ম্যাট সেখানে (মানুষ dirname) থেকে এটা চিন্তা করতে সক্ষম হবে :)
— Matthieu

1
আমি মনে করি আমরা সকলেই এখানে রয়েছি Matt শুধু অনুমান। তবে আমি আমার উত্তরটি আপনার থেকে আলাদা করার চেষ্টা করছিলাম। =)
— ম্যাচচিউ

হ্যাঁ, আমি বেসনেমটিও অনেক ব্যবহার করি, এটি খুব নিফটি =) তবে আমি গুগলে ফাইলটির ডির ফিরিয়ে দেওয়ার বিষয়ে কিছুই খুঁজে পাইনি! আমার ধারণা আমি সঠিক শব্দটি দেখছিলাম না। হাহ, আমাদের তিনজনই ম্যাট এর? : ডি
— ম্যাট

1
এই কমান্ডগুলি ফাঁকা স্থানগুলি (গ্লোব অক্ষর ইত্যাদি) এর সাথে কাজ করে তা নিশ্চিত করার জন্য প্রয়োজনীয় উদ্ধৃতি যুক্ত করার বিষয়টি বিবেচনা করুন।
— চার্লস ডাফি 21'18

3

${file%/*}আপনি বাহ্যিক কমান্ডের উপর নির্ভর করবেন না বলে উরভিন / লুফফাইয়ের প্রস্তাবিত মত ব্যবহার প্রযুক্তিগত দিক থেকে আরও ভাল। বেসনামটি একইভাবে পেতে আপনি করতে পারেন ${file##*/}। আপনার প্রয়োজন না হলে বাহ্যিক কমান্ড ব্যবহার করা অপ্রয়োজনীয়।

file="/stuff/backup/file.zip"
filename=${1##*/}     # file.zip
directory=${1%/*}     # /stuff/backup

এটি পুরোপুরি এইভাবে পসিক্স মেনে চলবে। আশা করি এটা সাহায্য করবে! :-)


1
নেই এক ক্ষেত্রে যেখানে dirname(আরও দক্ষ) উপর একটি সুবিধা রয়েছে বিল্ট-ইন পদ্ধতির, এবং যে যদি আপনি নির্দিষ্ট হয় না আপনার পাথ সম্পূর্ণরূপে যোগ্যতাসম্পন্ন দিয়ে শুরু হয়। আপনি যদি file=file.zip, dirname "$file"ফিরে আসবে ., যেহেতু ${file%/*}ফিরে আসবে file.zip।
— চার্লস ডাফি

1
... অবশ্যই, আপনি শাখা করতে পারেন: case $file in */*) dir=${file%/*};; *) dir=.;; esacএখনও POSIX-y এবং সমস্যাটি সম্বোধন করে।
— চার্লস ডাফি


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