সিএমলিঙ্কগুলি উপেক্ষা করে একটি ডিরেক্টরিতে থাকা লিখিত সামগ্রী


17

আমার একটি ডিরেক্টরি রয়েছে যেখানে আমি প্রতীকী লিঙ্কগুলি না দেখিয়ে সমস্ত সামগ্রী (ফাইল এবং উপ ডিরেক্টরি) তালিকাভুক্ত করতে চাই। আমি লিনাক্সে জিএনইউ ইউটিলিটিগুলি ব্যবহার করছি। lsসংস্করণ 8.13 হয়।

উদাহরণ:

সম্পূর্ণ ডিরেক্টরি তালিকা:

~/test$ ls -Gg
total 12
drwxrwxr-x 2 4096 Jul  9 10:29 dir1
drwxrwxr-x 2 4096 Jul  9 10:29 dir2
drwxrwxr-x 2 4096 Jul  9 10:29 dir3
-rw-rw-r-- 1    0 Jul  9 10:29 file1
-rw-rw-r-- 1    0 Jul  9 10:29 file2
lrwxrwxrwx 1    5 Jul  9 10:29 link1 -> link1
lrwxrwxrwx 1    5 Jul  9 10:30 link2 -> link2

আমি যা পেতে চাই

~/test$ ls -somthing (or bash hack)
total 12
dir1 dir2 dir3 file1 file2

দ্রষ্টব্য: আমার মূল অনুপ্রেরণা হ'ল প্রতিলিপিগুলি অনুসরণ না করে একটি পুনরাবৃত্ত গ্রেপ (জিএনইউ গ্রেপ 2.10) করা do

উত্তর:


28

বর্ণিত প্রশ্নের জন্য আপনি ব্যবহার করতে পারেন find:

find . -mindepth 1 ! -type l

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

mindepth 1কেবলমাত্র .বর্তমান-ডিরেক্টরি এন্ট্রি এড়িয়ে যাওয়া । এর মাংসের সংমিশ্রণ -type l, যার অর্থ "একটি প্রতীকী লিঙ্ক", এবং !যার অর্থ নিম্নলিখিত পরীক্ষাকে প্রত্যাখ্যান করা। সংমিশ্রণে তারা প্রতিটি ফাইলের সাথে মেলে যা একটি সিমলিঙ্ক নয়। এটি সমস্ত ফাইল এবং ডিরেক্টরিগুলি পুনরাবৃত্তভাবে তালিকাবদ্ধ করে, তবে কোনও প্রতিলিপি নেই।

আপনি যদি কেবল নিয়মিত ফাইল চান (এবং ডিরেক্টরি নয়):

find . -type f

এই ডিরেক্টরিটির কেবল প্রত্যক্ষ বাচ্চাদের অন্তর্ভুক্ত করার জন্য এবং অন্য সকলকে পুনরাবৃত্তভাবে নয়:

find . -mindepth 1 -maxdepth 1

আপনি যে ফাইলগুলি চান তার তালিকা পেতে আপনি সেগুলি (এবং অন্যান্য) পরীক্ষাগুলিকে একত্রিত করতে পারেন।

আপনি grepযে পরীক্ষাগুলি ব্যবহার করছেন তার সাথে মেলে প্রতিটি ফাইলে একটি নির্দিষ্ট ব্যবহার করতে, ব্যবহার করুন -exec:

find . -type f -exec grep -H 'some pattern' '{}' +

'{}'ফাইলগুলির সাথে প্রতিস্থাপন করা হবে। +বলতে প্রয়োজনীয় findআপনার কমান্ড সম্পন্ন করা হয়। বিকল্পটি -Hগ্রেপকে একটি ফাইলের নাম প্রদর্শন করতে বাধ্য করে এমনকি যদি এটি একটি একক ম্যাচিং ফাইলের সাথে চালিত হয়।


এটি প্যাটার্নটি পাওয়া গেলে ডাইনিতে ফাইলগুলি দেখায় না।
TheMeaningfulEngineer

এটিই আপনার পক্ষে চালানো grepহয়েছে (শেষ অনুচ্ছেদ দেখুন)।
মাইকেল হোমার

আমি আমার জন্য কাজ করি না। এটি যেখানে পাওয়া গেছে সেখানে কোনও ফাইল নাম ছাড়াই পাওয়া প্যাটার্নগুলি আউটপুট করে।
TheMeaningfulEngineer

2
ব্যবহারের grep -H, আপনি এটি আছে যদি (দেখুন man grep), অথবা অন্যথায় grep 'pat' '{}' /dev/null ';'চিন্তা যদি আপনি না একাধিক ফাইল আছে সেটিকে প্রতারিত করার।
মাইকেল হোমার

1
+অধঃপতন ক্ষেত্রে যেখানে প্রয়োজন কেবলমাত্র একটি ফাইল বা শেষে একটি ফাইল বাকি আছে তা পূরণ করতে ব্যর্থ।
মাইকেল হোমার 20

17

বা, আরও সহজ:

ls -l | grep -v ^l

ব্যাখ্যা

ls -lদীর্ঘ আকারে তালিকাভুক্ত করা মানে । আপনি যখন এটি করেন, অক্ষরের প্রথম স্ট্রিং প্রতিটি ফাইল সম্পর্কে তথ্য দেয়। প্রথম অক্ষর প্রতিটি ফাইল কি টাইপ তা নির্দেশ করে। যদি এটি একটি সিলেমিংক হয়, তবে একটি lহ'ল প্রথম চরিত্র।

grep -v ^lমানে ফিল্টার করার জন্য ( -v) লাইন দিয়ে (শুরু ^) একজন l


এটি দুর্দান্ত কাজ করে তবে কেবল ফোল্ডারের নাম কীভাবে পাবেন? আমি এটি ব্যবহার করতে চাইfor i in
লুকা

আপনি কি এই কোডটি ব্যাখ্যা করতে পারেন?
abg

সতর্ক থাকুন যে এই সমাধান যদি আপনি ommit কাজ করে না -lযে ls। সুতরাং এটি প্রত্যাশার মতো কাজ করবে না:ls | grep -v ^l
স্ট্যামস্টার

@ লুকা আপনি আউটপুটটি লুপ করবেন না find, দেখুন ইউনিক্স.স্ট্যাকেক্সেঞ্জাওয়েজ.কম
সেকশনস /

1
@abg - আমি একটি ব্যাখ্যা যুক্ত করেছি আশা করি এটা সাহায্য করবে.
জেফ

7

সংস্করণ ২.১২ থেকে -rGNU গ্রেপের বিকল্পটি প্রতীকী লিঙ্কগুলিকে অবহেলা করে না যদি আপনি সেগুলি হাত দ্বারা নির্দিষ্ট না করে:

-r, --recursive

প্রতিটি ডিরেক্টরি অধীনে সমস্ত ফাইল পড়ুন, পুনরাবৃত্তভাবে, প্রতীকী লিঙ্কগুলি অনুসরণ করে কেবল কমান্ড লাইনে থাকলে। এটি -d পুনরাবৃত্তির বিকল্পের সমতুল্য।

-আর, - আদর্শ-পুনরাবৃত্তি

প্রতিটি ডিরেক্টরিতে সমস্ত ফাইল পুনরাবৃত্তভাবে পড়ুন। সমস্ত প্রতীকী লিঙ্কগুলি অনুসরণ করুন, -r এর বিপরীতে।


গ্রিপ এর কি সংস্করণ। আমার -R, -r, --recursive Read all files under each directory, recursively; this is equivalent to the -d recurse option.2.10-এ রয়েছে
TheMeaningfulEngineer


5

Zsh, এই সহজ ধন্যবাদ হবে কোয়ালিফায়ার উল্লিখিত glob :

grep -- PATTERN **/*(.)

প্যাটার্নটি **/উপ-ডিরেক্টরিগুলি পুনরাবৃত্তভাবে অনুসরণ করে। গ্লোব কোয়ালিফায়ার .নিয়মিত ফাইলগুলির সাথে ম্যাচ সীমাবদ্ধ করে।

Zsh ছাড়া ব্যবহার করুন find( মাইকেল হর্নারের উত্তর দেখুন )। এবং এই বিশেষ ক্ষেত্রে, জিএনইউ গ্রেপ আপনি যা করতে চান তা করতে পারে (এটি ঠিক কী grep -rকরে) - তবে কেবল সংস্করণ ২.১২ থেকে, পূর্ববর্তী সংস্করণগুলি প্রতীকী লিঙ্কগুলি অনুসরণ করেছিল।


2

আপনি এটি করতে ব্যবহার করতে পারেন $LS_COLORS। যদি আপনার সংস্করণ lsসমর্থন করে তবে সেই পরিবর্তনশীলটি ব্যবহার করে রঙগুলি নির্দিষ্ট করা যায়, আপনি প্রতি ফাইল টাইপ আউটপুট নির্ধারণ করতে পারেন। এটি অন্তর্নির্মিত আচরণ এবং খুব কনফিগারযোগ্য। সুতরাং আমি ডেমো তৈরির জন্য কিছু ফাইল তৈরি করেছি:

for f in 9 8 7 6 5 4 3 2 1
    do touch "${f}file" && 
    ln -s ./"${f}file" ./"${f}filelink"
done

সুতরাং এখন আমি করব:

LS_COLORS='lc=:rc=:ec=:ln=\n\n\0HERE_THERE_BE_A_LINK>>\0:' \
ls -1 --color=always | cat

###OUTPUT###
1file


HERE_THERE_BE_A_LINK>>1filelink@
2file


HERE_THERE_BE_A_LINK>>2filelink@
3file

...
HERE_THERE_BE_A_LINK>>8filelink@
9file
...

এবং নালাগুলিও আছে ...

LS_COLORS='lc=:rc=:ec=:ln=\n\n\0HERE_THERE_BE_A_LINK>>\0:' \
ls -1 --color=always | sed -n l
1file$
$
$
\000HERE_THERE_BE_A_LINK>>\0001filelink@$
2file$
$
$
\000HERE_THERE_BE_A_LINK>>\0002filelink@$
3file$
...

আপনি সমস্ত বা যে কোনও ফাইল টাইপের জন্য নির্দিষ্ট করতে পারেন। কেবলমাত্র একক ফাইল lsটাইপের জন্য এটি করা আপনাকে সম্ভবত এটি পেতে না পারে যদিও টার্মিনাল পলায়নের জন্য কিছু ডিফল্ট সংকলন মান অন্তর্ভুক্ত করা হয়েছে। আপনি এপিআইকে একটি একক ইন্টারফেস হিসাবে সম্বোধন করতে আরও অনেক ভাল করতে চাই। বর্তমান পরিবেশটি dircolorsকনফিগার করা ডিফল্টগুলি পার্সিং এবং নির্ধারনের একটি সহজ সামান্য উপায়'s

LS_COLORS='rs=:no=//:lc=:rc=:ec=//:'$(
set -- di fi ln mh pi so do bd cd or su sg ca tw ow st ex
for fc do printf %s "$fc=/$fc//:"
done) ls -l --color=always | cat

আমার হোম ডিরেক্টরিতে এটির ফলাফলটি এরকম দেখাচ্ছে:

total 884
///-rw-r--r-- 1 mikeserv mikeserv    793 Jul  9 11:23 /fi//1/
//drwxr-xr-x 1 mikeserv mikeserv    574 Jun 24 16:50 /di//Desktop//
//-rw-r--r-- 1 mikeserv mikeserv    166 Jul  4 23:02 /fi//Terminology.log/
//-rw-r--r-- 1 mikeserv mikeserv      0 Jul  6 11:24 /fi//new
file/
//lrwxrwxrwx 1 mikeserv mikeserv     10 Jul 11 04:18 /ln//new
file
link/ -> /fi//./new
file/
//-rwxr-xr-x 1 mikeserv mikeserv    190 Jun 22 11:26 /ex//script.sh/*
//-rw-r--r-- 1 mikeserv mikeserv 433568 Jun 22 17:10 /fi//shot-2014-06-22_17-10-16.jpg/
//-rw-r--r-- 1 mikeserv mikeserv     68 Jun 17 19:59 /fi//target.txt/

আপনি cat -Aএটির সাথে এটি পরিচালনা করতে পারেন $এবং আপনি যে নতুন পার্থক্যের মুখোমুখি হবেন তা হ'ল আপনি নতুন লাইনগুলি দেখতে পাবেন - ls --color=alwaysএই কনফিগারেশনের মাধ্যমে কোনও ছাপিয়ে অক্ষর অক্ষর নেই - আপনি এখানে যা দেখেন কেবল তাই।

ls এটির ডিফল্ট টার্মিনালটি এভাবে পালিয়ে যায়:

${lc}${type_code}${rc}FILENAME${lc}${rs}${rc}

... যেখানে $lc (কোডের বাম) , $rc (কোডের ডান) এবং $rs (রিসেট) এর জন্য পূর্বনির্ধারিত মানগুলি :

 \033 - ESCAPE
 m - END ESCAPE
 0 - reset 

... যথাক্রমে। ${type_code}বিভিন্ন fi (নিয়মিত ফাইল - ডিফল্ট আনসেট) , di (ডিরেক্টরি) , ln (লিঙ্ক) , এবং আমার পরিচিত প্রতিটি ফাইল টাইপের জন্য দাঁড়ানোর জন্য ব্যবহৃত হয় । এছাড়াও আছে $no (সাধারণ) যা ডিফল্ট আনসেট ছাড়াও হয় এবং যা //প্রতিটি লাইনের শুরুতে এখানে প্রতিনিধিত্ব করে । আমার সাধারণ লিটল IFS=:ব্লকটি প্রতিটি কনফিগারযোগ্যটির নিজস্ব নাম হিসাবে নিজের নাম সন্নিবেশ করে এবং একটি স্ল্যাশ বা দুটি যোগ করে কাজ করে - যদিও \0NUL বাইটগুলিও তা করবে।

ডিফল্টরূপে এটির প্রথম আউটপুট পূর্বে অবিলম্বে lsএকটি প্রবেশ করানো হবে - তবে এটি এখানে সঠিকভাবে উপস্থাপন করা হয় না। এই ক্ষেত্রে আমি নির্দিষ্ট করে দেওয়া (শেষ কোড) যার জন্য বাধা হয়ে দাঁড়ায় সব ক্ষেত্রেই - যখন এটি উল্লেখ করা হয় আপনি একটি অতিরিক্ত পাবেন না মধ্যে এবং এটি শুধুমাত্র উপহার অবিলম্বে একটি ফাইল নিম্নলিখিত - আপনি অন্যথায় would হিসাবে এবং আউটপুট শুরুতে একবার - যেহেতু আপনি দেখতে পাচ্ছেন লাইনের একের মাথায় এক অতিরিক্ত স্ল্যাশ।$rs$lc$ec $rs$rs$no${type_code}

এখানে আমার নিজের একটি স্নিপেট $LS_COLORS

printf %s "$LS_COLORS"

rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:\
so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:\
or=40;31;01:su=37;41:sg=30;43:ca=30;41:\
tw=30;42:ow=34;42:st=37;44:ex=01;32:\
*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:...

এবং, সত্য বলতে গেলে, আমার ছোট্ট শেল হ্যাক সম্ভবত অত্যধিক জটিল - এই মানগুলি নির্ধারণের জন্য একটি বিস্তৃতভাবে উপলব্ধ ইন্টারফেস রয়েছে। dircolors -pআপনার ক্লিমে চেষ্টা করুন এবং সে info dircolorsসম্পর্কে আরও তথ্যের জন্য।

আপনি সুনির্দিষ্ট স্ট্রিংগুলিতে ফাইলের নামগুলি মোড়ানো করতে পারেন। আপনি ইচ্ছা করলে এগুলি মন্তব্য করতে পারেন। আপনি কেবল ফাইল এক্সটেনশনের ভিত্তিতে অনুরূপ আচরণগুলি নির্দিষ্ট করতে পারেন। সত্যিই খুব বেশি কিছু নেই যা আপনি সেভাবে নির্দিষ্ট করতে পারবেন না।

এখন আমি কেবল এই সমস্ত কিছু তৈরি করছি না - দুর্ঘটনাক্রমে উত্স কোডে হোঁচট খাওয়ার পরে আমি এটি সম্পর্কে শিখেছি ।

এই নির্দিষ্ট কনফিগারেশন সহ lsনির্গমন হবে:

  1. $no - প্রতিটি রেকর্ডের শুরুতে একবার রেকর্ড প্রতি

  2. ${type_code}- একবার সঙ্গে সঙ্গে প্রতিটি ফাইলের নামের আগে ফাইলের প্রকারের সংক্ষিপ্তসার অন্তর্ভুক্ত করা এবং সর্বদা একই লাইনে এবং 7 টি সাদা জায়গার সীমানা ক্ষেত্রের পরে $no বা তত্ক্ষণাত ->প্রতীকী লিঙ্কের লক্ষ্য চিহ্নিতকরণ অনুসরণ করা ।

  3. $ec - একবারে তত্ক্ষণাত্ খুব প্রথম লাইনের পূর্বে এবং তারপরে কেবল একবারে একবারে প্রতিটি ফাইলের নাম অনুসরণ করা।

  4. অন্যান্য সমস্ত মান খালি।

এরপরে যা শূন্য-বিস্মৃত তা হ'ল lsএবং এবার আমি এটি ব্যবহার করব cat -A, যদিও এটি না করে এটি শেষ উদাহরণের মতো দেখাবে:

LS_COLORS='rs=:no=\0//:lc=:rc=:ec=\0//:'$(
set -- di fi ln mh pi so do bd cd or su sg ca tw ow st ex
for fc do printf %s "$fc=/$fc//\0:"
done) ls -l --color=always | cat -A

total 884$
^@//^@//-rw-r--r-- 1 mikeserv mikeserv    793 Jul  9 11:23 /fi//^@1^@//$
^@//drwxr-xr-x 1 mikeserv mikeserv    574 Jun 24 16:50 /di//^@Desktop^@///$
^@//-rw-r--r-- 1 mikeserv mikeserv    166 Jul  4 23:02 /fi//^@Terminology.log^@//$
^@//-rw-r--r-- 1 mikeserv mikeserv      0 Jul  6 11:24 /fi//^@new$
file^@//$
^@//lrwxrwxrwx 1 mikeserv mikeserv     10 Jul 11 04:18 /ln//^@new$
file$
link^@// -> /fi//^@./new$
file^@//$
^@//-rwxr-xr-x 1 mikeserv mikeserv    190 Jun 22 11:26 /ex//^@script.sh^@//*$
^@//-rw-r--r-- 1 mikeserv mikeserv 433568 Jun 22 17:10 /fi//^@shot-2014-06-22_17-10-16.jpg^@//$
^@//-rw-r--r-- 1 mikeserv mikeserv     68 Jun 17 19:59 /fi//^@target.txt^@//$

এবং সুতরাং এটির মতো কোনও অনিং তালিকা থেকে সমস্ত প্রতীকী লিঙ্কগুলি নির্ভরযোগ্যভাবে মুছে ফেলার জন্য -l, আপনি একটি সাধারণ পরিবর্তন করতে পারেন:

LS_COLORS='rs=:no=//:lc=:rc=:ec=/ :'$(
set -- di fi mh pi so do bd cd or su sg ca tw ow st ex
for fc do printf %s "$fc=$fc/:"
done)ln=///: ls -l --color=always | sed ':ln
\|///|{N;\|\n//|!bln};s|.*//||'

চালানোর পরে আমার ফলাফলগুলি দেখতে দেখতে ...

total 884
-rw-r--r-- 1 mikeserv mikeserv    793 Jul  9 11:23 fi/1/ 
drwxr-xr-x 1 mikeserv mikeserv    574 Jun 24 16:50 di/Desktop/ /
-rw-r--r-- 1 mikeserv mikeserv    166 Jul  4 23:02 fi/Terminology.log/ 
-rw-r--r-- 1 mikeserv mikeserv      0 Jul  6 11:24 fi/new
file/ 
-rwxr-xr-x 1 mikeserv mikeserv    190 Jun 22 11:26 ex/script.sh/ *
-rw-r--r-- 1 mikeserv mikeserv 433568 Jun 22 17:10 fi/shot-2014-06-22_17-10-16.jpg/ 
-rw-r--r-- 1 mikeserv mikeserv     68 Jun 17 19:59 fi/target.txt/ 

আমি উপরের মতো কিছু আদেশ ব্যবহার করে:

LSCOLORS=...$(...)fc1=///:fc2=///: ls ... | sed ...

... ( সাবসেলের পরে ফাইল টাইপগুলি কোথায় fc1এবং fc2তালিকাবদ্ধ রয়েছে set --)ls ফাইলের নামগুলির যে কোনও অক্ষর নির্বিশেষে আউটপুট থেকে আপনি যে ফাইল টাইপগুলি চান তা নির্ভরযোগ্যভাবে মুছে ফেলার জন্য পরিবেশন করা উচিত ।


হি, দুর্দান্ত, মৌলিকতার জন্য +1। ডিরেক্টরিগুলিতে শ্বাসরোধ করতে দেখে মনে হচ্ছে, এগুলি ছাপানো এএনএসআই রঙের কোডের সাথে রয়েছে। যাইহোক, আপনি কীভাবে এটি কাজ করে তার একটি ব্যাখ্যা যোগ করতে পারেন? সম্ভবত কি ব্যাখ্যা lc,nc ইত্যাদি হয়?
টেরডন

@ ইটারডন - এগুলি কেবল আপনার পরিবেশে ইতিমধ্যে সেট করা এএনএসআই পলায়নের সাথে মুদ্রিত এবং lsএর di=মান হিসাবে একটি ডিফল্ট হিসাবে সংকলিত । আপনাকে যুক্ত করা দরকারdi=: এবং অন্যান্য জন্য - Var যে খর্ব করতে। এপিআই বলতে আমি যা বোঝাতে চাইছি - আপনি প্রতিটি ফাইল টাইপকে সম্বোধন করেন তবে আপনাকে সমস্ত ক্ষেত্রে ইন্টারফেসটি একইভাবে সম্বোধন করতে হবে। সুতরাং lnএকটি উপায় নির্ধারণ করা এবং diডিফল্টগুলি উপেক্ষা করা কার্যকর হবে না। পাশাপাশি অনেকগুলি ডিফল্ট সংকলিত আছে ... হুঁ। আপনার সম্পর্কে lcএবং স্টাফগুলির বিষয়ে জিজ্ঞাসা ncবৈধ - সম্পূর্ণ - যদিও আমি অন্য দিন ইতিমধ্যে এটি করেছি। আমি এটি লিঙ্ক করব, আমি মনে করি।
মাইকজার্ভ

ওহ, সুতরাং আমাকে সর্বদা সমস্ত সম্ভাব্য ফাইল প্রকার নির্দিষ্ট করতে হবে বা হাতের সামনে উপস্থিত রয়েছে কি তা পরীক্ষা করতে হবে? ঠিক আছে ধন্যবাদ.
টেরডন

@ ইটারডন - এখনই আমার সম্পাদনাটি দেখুন - এটি শেল কয়েক লাইন দিয়ে সমস্ত কিছু করে, প্রতিটি প্রকারকে তার প্রকারের নাম অনুসারে নির্দিষ্ট করে এবং প্রতিটি ফাইলের নাম নির্ভরযোগ্যভাবে সীমিত করে দেয়। কোনও প্রিন্টেবল চালু করা হয় না। এবং যেভাবে যাইহোক এটির জন্য একটি এপিআই আছে - এটি dircolors। এটি একটি কনফিগার ফাইল পড়ে এবং শেল evalবান্ধব ভার মান দেয় out এটি বেশ সহজ - তবে সেখানে কয়েকটি লাইন রয়েছে। যাইহোক, আপনি যদি ব্যবহার করতে চানdircolors করতে চান তবে কেবল দুটি আলাদা ফাইল সংরক্ষণ করুন এবং সেভাবে এটি চালিত করুন। এছাড়াও, আমি আপনাকে অন্য দিন দেখিয়েছি কীভাবে \0প্রতিটি পালানোর ক্রমের অংশ হিসাবে NUL ডিলিটরগুলির সাথে একসাথে উভয় কাজ করতে হয় ।
মাইকজার্ভ

@ ইটারডন - আমি যে মানগুলি সংকলিত হতে পারে তার সবগুলি নির্ধারণ করা কতটা সহজ তা পরিষ্কার করার চেষ্টা করেছি - আমার মনে হয় আমি এগুলি পেয়েছি, সম্ভবত অনেক বেশি ... LS_COLORS='rs=:no=\0//:lc=:rc=:ec=\0//:'$( set -- di fi ln mh pi so do bd cd or su sg ca tw ow st ex; for fc do printf %s "$fc=/$fc//\0:"; done) ls -l --color=always | cat -A
এগুলি

0

উপরের উত্তর নীচের দিকে নিয়ে যায়:

 ls -1F | grep -i "/"

অদ্ভুতভাবে ls কমান্ডের বাইরে 1 টি এখনও একটি তালিকা দেয়।


1
কেন grep -i? এটি /আপার বা লোয়ার-কেস হতে পারে এমন নয় । lsআউটপুটটি টার্মিনাল না হলে কোনও নো-কলাম বিন্যাসে ডিফল্ট হয় (এটি এখানে পাইপ)।
কুসালানন্দ

-2

আর একবার চেষ্টা কর:

ls | grep -v " -> "

2
এটি বিভিন্ন কারণে ব্যর্থ হবে, উদাহরণস্বরূপ একটি ফাইলের জন্য a -> b। এটি নিউলাইন এবং অন্যান্য উদ্ভটতার সাথে ফাইলের নামগুলিতেও ব্যর্থ হবে। অনুগ্রহ করে পড়ুন এই কেন ম পার্স একটি খারাপ ধারণা জন্য।
টেরডন

@ এটারডন এটি ব্যর্থ হওয়ার আরও মূল কারণ রয়েছে reasons হয় lsএ্যালাইজড ls -l, এবং এটি ফাইলের নামের আগে কলামগুলি ফেরত দেয়, বা এটি হয় না এবং এটি প্রতীকী লিঙ্কগুলিতে বিশেষ কিছু করে না।
গিলস 21:51

@ এটারডন - lsনিজেই পার্স করে। আমরা সকলেই lsপ্রতিবার টার্মিনালে প্রিন্ট করি - একটি এপিআই থাকে । আমি এখানে এখানে এর মতো কিছু প্রদর্শন করে একটি উত্তর পোস্ট করেছি - তবে আপনি আরও অনেক কিছু করতে পারেন। আমি আপনাকে অন্য দিনটি দেখিয়েছি - আপনি নিজে নাল-সীমাবদ্ধ ফাইলের নাম রেখেছিলেন।
মাইকজার্ভ

@ মাইক্রোভার আমি জানি, আমি জানি। তবে, কীভাবে নিরাপদে এটি করবেন তা ব্যাখ্যা করতে আপনার নিজের মতো করে কয়েকশ লাইন লাগবে। যেমনটি দাঁড়িয়েছে, এই উত্তরটি পার্সিংয়ের সমস্ত বিপদে ভুগছে এবং ওপি তাদের সম্পর্কে স্পষ্টভাবে অবগত নয়।
টেরডন

@ ইটারডন - lsআপনার বাচ্চাদের বা কিছু খেতে যাচ্ছে না - এটি কেবল একটি প্রোগ্রাম। তারপর আপনি তা ব্যাখ্যা না থাকে তাহলে এটা হবে কয়েক শত নিতে তা ব্যাখ্যা করার জন্য এবং কয়েক শত আরো ব্যাখ্যা কেন কয়েক শত লাইন আপনি শুধু লিঙ্ক ভুল। এবং LS_COLORS='lc=:rc=:ec=:ln=\n\n\0HERE_THERE_BE_A_LINK>>\0:' \ ls -1 --color=always | cat
তদতিরিক্ত

-3

এই আদেশটি ব্যবহার করে দেখুন: ls -p | grep -v @


না, লিঙ্কগুলি তালিকাবদ্ধ করে।
TheMeaningfulEngineer

@ অ্যালান: কে চেষ্টা করে দেখুনfind -type f
এইভাবে

1
-1 কারণ: i) -pডিরেক্টরিগুলি কেবলমাত্র স্ল্যাশ যুক্ত করে, আপনি খুঁজছেন -Fii) আপনার findবিকল্প ডিরেক্টরিগুলি তালিকাভুক্ত করবে না এবং iii) পোস্ট করার আগে দয়া করে আপনার উত্তরগুলি পরীক্ষা করুন।
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.