ডিরেক্টরিতে লুকানো ফাইলগুলির সাথে * কীভাবে মিলিত হয়


21

প্রদত্ত ডিরেক্টরিগুলির মধ্যে লুকানো ফাইলগুলি কীভাবে মিলবে

উদাহরণ স্বরূপ

আমি যদি নীচের কমান্ডটি দিয়ে থাকি তবে এটি লুকানো ফাইলগুলির ফলাফল দিচ্ছে না,

 du -b maybehere*/*

ব্যবহারের পরিবর্তে একটি একক কমান্ড ব্যবহার করে কীভাবে এই সহজ অর্জন করা যায়

du -b maybehere*/.* maybehere*/*

যেহেতু আমার দুটিবার সম্ভবত টাইপ করা দরকার।


শুধু লুকিয়ে থাকার চেষ্টা করুন maybehere*/.*এবং সবার জন্য উপরের সংযোজন
কস্টাস

1
আপনার সম্পাদনাটি অতিরিক্ত বিধিনিষেধের সাথে একটি নতুন প্রশ্ন তোলে, এটি Q কে একটি চলন্ত লক্ষ্য হিসাবে পরিণত করে, ইতিমধ্যে প্রদত্ত উত্তর (গুলি) বাতিল করে দেয়। এটি খারাপ আচরণ, আপনার যদি এটি থাকে তবে কেবল একটি নতুন প্রশ্ন জিজ্ঞাসা করুন।
অ্যান্থন

উত্তর:


22

ধনুর্বন্ধনী বিস্তারের সুবিধা নিন:

du -b maybehere*/{*,.[^.],.??*}

বা বিকল্পভাবে

du -b maybehere*/{,.[^.],..?}*

এর পিছনে যুক্তি সম্ভবত সুস্পষ্ট নয়, সুতরাং এখানে ব্যাখ্যা:

  • * সমস্ত অ গোপনীয় ফাইলের সাথে মেলে
  • .[^.]যে নামগুলি একক বিন্দু দিয়ে শুরু হয়েছিল তার পরে কোনও বিন্দু নয়; এটি প্রথম আকারে কেবলমাত্র দুটি অক্ষরের ফাইল নাম।
  • .??* অন্তত 3 টি অক্ষরের দীর্ঘ লুকানো ফাইলগুলির সাথে মেলে
  • ..?* উপরের মত তবে দ্বিতীয় চরিত্রটি অবশ্যই একটি বিন্দু হতে হবে

পুরো বিষয়টি হ'ল বর্তমান এবং মূল ডিরেক্টরি ( .এবং ..) এর হার্ড লিঙ্কগুলি বাদ দেওয়া , তবে সমস্ত সাধারণ ফাইলকে এমনভাবে অন্তর্ভুক্ত করুন যাতে তাদের প্রতিটিকে একবারই গণনা করা হবে!

উদাহরণস্বরূপ সহজ লিখতে হবে

du -b maybehere*/{.,}*

এর অর্থ হল যে তালিকার মধ্যে একটি বিন্দু .এবং "কিছুই নেই" (কিছুই নেই ,এবং এর মধ্যে বন্ধ থাকে }), সুতরাং সমস্ত লুকানো ফাইল (যা কোনও বিন্দু থেকে শুরু হয়) এবং সমস্ত অ গোপন ফাইল (যা "কিছুই না" থেকে শুরু হয়) মিলবে। সমস্যাটি হ'ল এটিও মিলবে .এবং .., এবং এটি সম্ভবত আপনি যা চান তা নয়, সুতরাং আমাদের এটি কোনওভাবেই বাদ দিতে হবে।


বন্ধনী সম্প্রসারণ সম্পর্কে চূড়ান্ত শব্দ।

ব্রেস এক্সপেনশন এমন একটি প্রক্রিয়া যার মাধ্যমে আপনি কম অক্ষর লিখে কম্যান্ডলাইনটিতে আরও ফাইল / স্ট্রিং / যা কিছু অন্তর্ভুক্ত করতে পারেন। বাক্য গঠনটি হ'ল {word1,word2,...}, এটি কমা দ্বারা পৃথক হওয়া স্ট্রিংগুলির একটি তালিকা যা শুরু করে {এবং শেষ হয় }bashম্যানুয়াল একটি খুব বেসিক দেয় এবং একই সাথে ব্যবহারের খুব সাধারণ উদাহরণ দেয়:

$ echo a{b,c,d}e
abe ace ade

আমার কী { }ধারণা নেই এর ব্যবহারটি কি :( আপনি কি আমাকে এ সম্পর্কে আরও তথ্যের জন্য একটি নির্দেশিকা দিতে পারেন
বিধান

@ বিধান সম্পাদনাটি দেখুন man bashএবং "ব্রেস সম্প্রসারণ" অধ্যায়টি দেখুন।
jimmij

আপনি কি আমাকে উপরোক্ত উত্তরগুলির জন্য আরও কিছুটা আরও স্পষ্টভাবে ব্যাখ্যা করতে চাইবেন যে আমি এই জিনিসগুলির সাথে আমি যেমন নতুন তেমন কাজ করি কীভাবে
@

6
.??*মেলে ব্যর্থ .a, .b... .[^.]*মেলতে ব্যর্থ ..foo
স্টাফেন চেজেলাস

4
.fooউভয় .[^.]*এবং মেলে .??*। আপনি চান {.[!.],..?,}*
স্টাফেন চেজেলাস

14

যেহেতু আপনি ইতিমধ্যে GNU নির্দিষ্ট সিনট্যাক্স ব্যবহার করছেন -b:

du -abd1 maybehere*/

এইভাবে, এটি ডিরেক্টরিতে duফাইল তালিকাভুক্ত করে maybehere*(এবং এটি ডট ফাইলগুলি বাদ দেয় না)। -d1ডিস্ক ব্যবহারের রিপোর্টিংকে এক স্তর নীচে সীমাবদ্ধ করে (যার সাথে নন-ডিরেক্টরি সহ -a)।

অন্যথায়, গ্লোবগুলিতে লুকানো ফাইলগুলি অন্তর্ভুক্ত করতে ( .এবং ব্যতীত ..) প্রতিটি শেলের নিজস্ব বাক্য গঠন থাকে:

  • zsh:

    du -b maybehere*/*(D)
  • ksh93:

    (FIGNORE='@(.|..)'; du -b maybehere*/*)
  • bash:

    (shopt -s dotglob; du -b maybehere*/*)
  • tcsh:

    (set globdot; du -b maybehere*/*)
  • yash:

    (set -o dot-glob; du -b maybehere*/*)

    যদিও এটি অন্তর্ভুক্ত রয়েছে .এবং ..এমন সিস্টেমে সাবধান থাকুন readdir() যার ফলস্বরূপ এটি অন্তর্ভুক্ত রয়েছে যার ফলে এটি খুব সহজেই ব্যবহারযোগ্য হয়।


8

অন্য বিকল্প এখানে পাওয়া যায় :

du -sm .[!.]* *

আপনি কেন ফাইল নামগুলি শুরু করে এড়িয়ে যেতে চান ..?
কুসালানন্দ

2
সম্ভবতঃ, কারণ তারা ../নীচে এবং নীচে সমস্ত কিছু তালিকাবদ্ধ করতে চায় না ।
শাদুর

এটি যেমন ফাইল গণনা করে না ..myfile; ..?*যে জন্য যোগ করুন । তবে নেতিবাচক ম্যাচের জন্য সঠিক গ্লোব সিনট্যাক্স ব্যবহারের জন্য +1।
পেড্রো গিমেনো

0

আপনি যদি কেবল লুকানো ডিরেক্টরিগুলি তালিকাভুক্ত করতে চান বা গোপন ডিরেক্টরিতে পরিচালনা করতে চান তবে কোস্টাস যেমনটি ব্যবহার করতে পারেন বলেছিলেন

du -b maybehere*/.*

এটি আপনাকে লুকানো ফাইল এবং ডিরেক্টরিতে পরিচালনা করার অনুমতি দেবে। যদি আপনি কেবল লুকানো ডিরেক্টরি চান তবে আপনি এটির সাথে এটি নির্দিষ্ট করতে পারেন

du -b maybehere*/.*/


আপনি কি দয়া করে আবার প্রশ্নটি দেখতে পারেন @ সাইলার কায়ার আমি এটি কিছুটা সম্পাদনা করেছি
বিধান

@ বিধান আপনি কেবল একটি ডিরেক্টরিতে লুকিয়ে কাজ করতে চান? এটা কি ঠিক?
সাইলার কায়ার

কোন পরিবর্তে আমি উভয় ব্যবহার করার একটি ডিরেক্টরি ভিতরে গোপন ও প্রকাশ্য অ লুকানো ফাইল মেলে চান du maybehere*/.*এবং maybehere*/*জন্য লুকানো এক এবং অন্য অ লুকানো
বিধান

@ বিধান du -bগোপন এবং গোপন উভয়ই তুলে ধরে।
সাইলারসিয়ার

না :( দুর্ভাগ্যক্রমে @
সাইলার

0

সরাসরি শেল না করে, আপনি এর মতো সীমিত গভীরতার সাথে অনুসন্ধান ব্যবহার করতে পারেন

find maybehere -maxdepth 1 -exec du -sh {} \;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.