কীভাবে / ইত্যাদি থেকে "ক" বা "সি" দিয়ে ফাইলগুলি তালিকাভুক্ত করা যায়। [বন্ধ]


10

আমি চেষ্টা করেছিলাম ls /etc/[ac]*তবে এটি একটি বা সি দিয়ে শুরু হওয়া ডিরেক্টরিগুলি এবং তাদের সম্পূর্ণ বিষয়বস্তুগুলি দেখায় , " " বা " সি " দিয়ে শুরু হওয়া ফাইলগুলি নয় ।


ডিরেক্টরি বিভিন্ন ধরণের ফাইলের মধ্যে একটি । আপনি কোন ধরণের ফাইলগুলিতে আগ্রহী (নিয়মিত, সিমলিংক, ডিভাইস, পাইপ, সকেট ...)?
স্টাফেন চেজেলাস

আপনি "ডিরেক্টরি" দ্বারা ডিরেক্টরিগুলির বিষয়বস্তু সম্পর্কে, বা ডিরেক্টরি নিজের নামের বিষয়ে কথা বলছেন কিনা তা স্পষ্ট নয় । আপনি যে কমান্ডটি দেখান সেগুলি প্যাটার্নের সাথে মেলে এমন ডিরেক্টরিগুলির বিষয়বস্তু তালিকাভুক্ত করে, যার সাথে ls -d /etc/[ac]*আপনি মেলে ডিরেক্টরিগুলির বিষয়বস্তু পাবেন না, তবে এখনও ডিরেক্টরিটির নাম দেখতে পাবেন। আপনি যা চান তা এটি কিনা বা আপনি এমনকি ডিরেক্টরি নাম তালিকা বর্জন করতে চান কিনা তা স্পষ্ট নয়।
কুসালানন্দ

উত্তর:


23

ডিরেক্টরিগুলির বিষয়বস্তু তালিকাবদ্ধ করা এড়াতে, আপনি এটি করতে পারেন:

ls -d /etc/[ac]*

ডিরেক্টরিটি নতুন তালিকা প্রস্তুত করা যাবে নাম দিয়ে শুরু সাধারণ ফাইলের নাম সহ aবা c

সম্পূর্ণতার জন্য, জড়িত না এমন একটি সমাধান findহতে পারে:

ls -ld /etc/[ac]* | grep ^- | tr -s ' ' | cut -d' ' -f9

আমার প্রশ্নের প্রাথমিক ls -dপাঠটিও যথাযথ বলে মনে হয়েছিল , তবে এটি মনে হয় যে মূল প্রশ্নটি নির্দিষ্ট করে যে কোনও ডিরেক্টরি তালিকাভুক্ত করা উচিত নয়, নির্বিশেষে সম্প্রসারণ বা প্রসারহীন।
ক্রিস ডাউন

1
ls -ld /etc/[ac]* | grep ^- | tr -s ' ' | cut -d' ' -f9পার্স না ls
অবিনাশ রাজ

1
@ অবিনাশরাজ: ঠিক আছে, সেই পরামর্শের প্রাসঙ্গিকতা নির্ভর করে একবারে, বা চিরতরে কাজ করার জন্য এই সমাধানের প্রয়োজন কিনা তার উপর depends যদি কেবল একবার হয়, তবে পার্সিংটি lsআমার মতে ন্যায্য খেলা।
গ্রেগ হিউগিল

3
তিনি একটি বিন্দু আছে। যদিও নামগুলি /etcবুদ্ধিমান হওয়ার সম্ভাবনা খুব কম, lsতবে ক্ষেত্রের নম্বরগুলি পরিবর্তিত হওয়ায় একটি সহজ স্পেস এপ্রোচ ভেঙে দেবে। ls -ldযদিও +1
টেরডন

1
আপনাকে লোকেল ( LC_ALL=C) ঠিক করতে হবে , অন্যান্য লোকালয়ে 3 টি ক্ষেত্র থাকার তারিখের গ্যারান্টি নেই।
স্টাফেন চেজেলাস

7

recursively:

find /etc -type f -name '[ac]*'

আপনার যদি পুনঃবিবর্তন প্রয়োজন হয় তবে আপনি বহনযোগ্যভাবে এটি করতে পারেন:

find /etc/. ! -name . -prune -type f -name '[ac]*'

বা এটি, অ-বহনযোগ্য (জিএনইউ বা সাম্প্রতিক বিএসডি সন্ধান):

find /etc -type f -maxdepth 1 -name '[ac]*'

আপনি যদি এই মামলাটি সংবেদনশীলতার সাথে করতে চান তবে -inameপরিবর্তে ব্যবহার করুন -name


1
লক্ষ্য করুন -type fজন্য নিয়মিত ফাইল । পরিবর্তে আপনার যদি অ-ডিরেক্টরি ফাইলের প্রয়োজন হয় তবে এর সাথে প্রতিস্থাপন করুন ! -type d(বা আপনি যদি ডিরেক্টরিতে সিমলিংকগুলি বাদ দিতে চান তবে ! -xtype dজিএনইউ দিয়ে find)।
স্টাফেন চেজেলাস

1

আপনি এই আদেশটিও চেষ্টা করে দেখতে পারেন,

for file in /etc/[ac]*; do echo $file; done | xargs file | awk -v FS=" +" '$2~/directory/ {next;} {print $1}' | sed 's|\/etc\/||g;s/://g'

1

আপনি যদি ডিরেক্টরী (ডিরেক্টরিগুলির বিষয়বস্তু নয়) এবং ফাইল উভয়ই চান তবে আপনি printfবুল্টিন ব্যবহার করতে পারেন :

printf "%s\n" [ac]*

উদাহরণ:

$ printf "%s\n" [te]*
examples.desktop
teamviewer_linux.deb
test.php
test.txt

এই ডিরেক্টরিতে কীভাবে এড়াতে হবে, যেমনটি অনুরোধ করা হয়েছে?
ক্রিস ডাউন

ওহ, আমার ভুল পড়া আমি মনে করি ওপি ডিরেক্টরি চায় তবে এর সামগ্রীগুলি নয়।
cuonglm

সম্পূর্ণরূপে অপঠিত, সম্পাদনা সম্পর্কে দুঃখিত।
টেরডন

1

ব্যতীত পুনরাবৃত্তিযোগ্য find:

ls -pd /etc/[ac]* | grep -v '/$'

-pএকটি যোগ /ডিরেক্টরি জন্য শেষ, যা grepআউট ফিল্টার করে। অবশ্যই নতুন নামগুলির মতো বিশেষ অক্ষরযুক্ত ফাইলের নামগুলির জন্য কাজ করে না।


1

সহ zsh:

print -rl /etc/[ac]*(.)

তালিকা প্রস্তুত করবে নিয়মিত ফাইল (হিসাবে -type fমধ্যে find) মধ্যে তালিকাভুক্ত /etcসঙ্গে যার নাম শুরু হয় aবা c(xxx)একটি উল্লিখিত glob শেষে অংশ zsh-নির্দিষ্ট বৈশিষ্ট্য কোয়ালিফায়ার globbing বলা হয়। .গ্লোব্বিং কোয়ালিফায়ার হিসাবে নিয়মিত ফাইল

যদি গ্লোব মেলে না, zshতবে কমান্ডটি বাতিল করে দিন। মনে রাখবেন যে অন্যান্য বোর্নের মতো শেলগুলিতে, গ্লোবটি মেলে না, প্যাটার্নটি নিজের কাছে প্রসারিত হয়, তাই ls -d /etc/[ac]*ভুল ফাইলের সাথে একটি ফাইল তালিকাবদ্ধ করতে পারে /etc/[ac]*যদি না কোনও ফাইল শুরু হয় aবা cনা শুরু হয় /etc

print -rl /etc/[ac]*(^/)

যে ফাইল হয় তালিকা প্রস্তুত করবে না ধরনের ডিরেক্টরি এবং

print -rl /etc/[ac]*(-^/)

সিমলিঙ্কগুলি সমাধান করার পরে যে ফাইলগুলি টাইপের ডিরেক্টরি নয় সেগুলি তালিকাভুক্ত করবে।


-3

একটি দিয়ে শুরু ফাইল প্রদর্শন জন্য:

ls etc |  grep ^a

সি দিয়ে শুরু ফাইলগুলি প্রদর্শনের জন্য:

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