از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نام فایل را بدون پسوند در Bash بخوانید
سرفصلهای مطلب
کاربران لینوکس برای اهداف زیادی نیاز به کار منظم با فایل ها دارند. گاهی اوقات کاربران تنها با حذف پسوند فایل نیاز به خواندن نام پایه فایل دارند. نام فایل و پسوند را می توان جدا و ذخیره کرد روی متغیرهای مختلف در لینوکس به روش های مختلف. برای حذف پسوند فایل می توان از دستور داخلی Bash و بسط پارامتر پوسته استفاده کرد. روش خواندن نام فایل بدون پسوند با استفاده از روش های ذکر شده در بالا در این آموزش توضیح داده شده است.
با استفاده از دستور “basename” برای خواندن نام فایل
دستور “basename” برای خواندن نام فایل بدون پسوند از یک فهرست یا مسیر فایل استفاده می شود.
نحو:
یا
در اینجا، NAME میتواند شامل نام فایل یا نام فایل با مسیر کامل باشد. SUFFIX اختیاری است و شامل بخش پسوند فایلی است که کاربر می خواهد حذف کند. دستور “basename” گزینه هایی دارد که در زیر توضیح داده شده است.
گزینه ها
نام | شرح |
-آ | برای ارسال چندین نام فایل با مسیر یا بدون مسیر به عنوان آرگومان های فرمان استفاده می شود. |
-s | برای ارسال پسوند به عنوان پسوندی که باید حذف شود استفاده می شود. |
-z | برای نمایش چندین نام فایل با جدا کردن هر فایل با null استفاده می شود. |
-کمک | برای نمایش اطلاعات استفاده از دستور basename استفاده می شود. |
-نسخه | برای نمایش اطلاعات نسخه استفاده می شود. |
مثال-1: استفاده از NAME و SUFFIX
دستور “basename” زیر نام فایل را با پسوند بازیابی می کند. SUFFIX از این دستور حذف شده است. در اینجا، خروجی است “product.txt”.
اگر می خواهید نام فایل را بدون پسوند بازیابی کنید، باید پسوند فایل را به صورت SUFFIX با دستور “basename” ارائه کنید. در اینجا، پسوند “.txt” است. دستور زیر را برای حذف پسوند از فایل اجرا کنید.
مثال-2: استفاده از گزینه -a و NAME
استفاده از گزینه ‘-a’ دستور ‘basename’ در این مثال نشان داده شده است. در اینجا، دو مسیر فایل به عنوان آرگومان با دستور “basename” ارسال می شود. هر نام فایل با پسوند از مسیر و بازیابی می شود print توسط خط جدید
مثال-3: استفاده از گزینه ‘-z’ و NAME
گزینه ‘-z’ با دستور ‘basename’ استفاده می شود print چندین نام فایل با مقدار null به جای خط جدید. دستور زیر از دو گزینه با هم استفاده می کند، ‘-a’ و ‘-z’. در اینجا، دو نام فایل، index.html و emp.txt اراده print بدون هیچ فاصله یا خط جدید.
مثال-4: استفاده از گزینه ‘-s’ و NAME
دستور زیر را می توان به عنوان جایگزین SUFFIX با ‘basename’ استفاده کرد. پسوند فایل باید با گزینه ‘-sh’ عبور کند تا پسوند فایل از فایل حذف شود. مثال زیر پسوند ‘-sh’ را از فایل ‘addition.sh’ حذف می کند.
مثال-5: پسوند فایل را بدون SUFFIX حذف کنید
اگر پسوند فایلی را که میخواهید از نام فایل حذف کنید، نمیدانید، این مثال به شما در حل مشکل کمک میکند. یک فایل به نام ایجاد کنید read_file.sh با کد زیر برای بازیابی نام فایل هر پسوند. دستور sed در این مثال برای حذف هر نوع پسوند از نام فایل استفاده می شود. اگر اسکریپت را اجرا کنید، خروجی به صورت ‘ خواهد بودمیانگین“پس از حذف پسوند”py‘.
read_file.sh
# نام فایل را با مسیر تنظیم کنید
نام فایل=«/خانه/فهمیدا/کد/میانگین.py”
# با استفاده از دستور “basname” و “sed” نام فایل را بدون پسوند بخوانید
echo “$(نام پایه “$filename” | sed ‘s/\(.*\)\..*/\1/’)”
اسکریپت را اجرا کنید.
مثال-6: پسوند فایل را از txt به docx تبدیل کنید
نام فایل بدون پسوند نیاز به تبدیل فایل از یک پسوند به پسوند دیگر دارد. این مثال نشان میدهد که چگونه میتوانید پسوند همه فایلهای متنی (txt.) را با استفاده از دستور «basename» به فایلهای word (docx.) تغییر دهید. bash اسکریپت یک فایل با نام، convert_file.sh با کد زیر در اینجا از یک حلقه for-in برای خواندن تمام فایل های متنی استفاده می شود «.txt» پسوند از دایرکتوری فعلی نام فایل بدون پسوند با دستور “basename” خوانده می شود و با افزودن پسوند “.docx” در هر تکرار حلقه تغییر نام می دهد.
convert_file.sh
# حلقه هر فایل متنی را از دایرکتوری فعلی می خواند
برای نام فایل که در `ls *txt`
انجام دادن
# نام فایل متنی را قبل از تبدیل چاپ کنید
echo “نام فایل قبل از تبدیل: $filename“
# پسوند فایل txt را به docx تغییر دهید
mv — “$filename“ “$(basename — “$filename” .txt).docx”
انجام شده
اسکریپت را اجرا کنید.
با استفاده از دستور ls بررسی کنید که فایل های متنی تبدیل شده اند یا خیر.
مثال-7: خواندن نام فایل بدون پسوند با استفاده از بسط پارامتر Shell
گسترش پارامتر پوسته روش دیگری برای خواندن نام فایل بدون پسوند است bash. این مثال کاربردهای بسط پارامتر پوسته را نشان می دهد. دستور زیر نام مسیر فایل را در متغیر $ ذخیره می کندنام فایل.
دستور زیر انواع پسوندها را از مسیر حذف می کند و مسیر فایل را بدون پسوند در متغیر ذخیره می کند. $file1.
دستور زیر خواهد بود print نام فایل فقط از مسیر. در اینجا، خروجی ‘myfile‘.
اگر نام فایل دارای دو پسوند با دو نقطه (.) است و می خواهید نام فایل را با حذف آخرین پسوند فایل بخوانید، باید از دستور زیر استفاده کنید. دستور زیر را اجرا کنید که مسیر فایل را در متغیر ذخیره می کند $file2 با حذف آخرین پسوند فایل.
حالا دستور زیر را اجرا کنید print نام فایل با پسوند یک نقطه (.). در اینجا، خروجی خواهد بود “myfile.tar”.
نتیجه
نام فایل بدون پسوند برای اهداف مختلف مورد نیاز است. برخی از کاربردهای نام فایل بدون پسوند در این آموزش با استفاده از چند مثال مانند تبدیل فایل توضیح داده شده است. این آموزش به کاربرانی که علاقه مند هستند کمک می کند تا راه های جداسازی نام و پسوند فایل از مسیر فایل را بیاموزند. در اینجا دو راه توضیح داده شده است. کاربر می تواند هر یک از این راه ها را دنبال کند تا نام فایل را فقط از مسیر فایل استخراج کند.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 18:35:04