ডিরেক্টরিতে সমস্ত প্রতীকী লিঙ্ক কীভাবে তালিকাভুক্ত করা যায়


145

আমার /var/www/ডিরেক্টরিতে একটি প্রতীকী লিঙ্ক রয়েছে যা ওয়ার্ডপ্রেসের সাথে লিঙ্ক করে। আমি যখন ডিরেক্টরিটি ls -laথেকে কমান্ডটি চালিত করি তখন /var/www/ওয়ার্ডপ্রেসের লিঙ্কটি প্রদর্শিত হয় না। ডিরেক্টরিতে থাকা সমস্ত প্রতীকী লিঙ্কের তালিকা দেওয়ার কোনও উপায় আছে কি?


উত্তর:


80

আপনি বর্তমান নির্দেশিকায় উপস্থিত সমস্ত প্রতীকী লিঙ্ক তালিকা করতে কমান্ড grepসহ ব্যবহার করতে পারেন ls

এটি বর্তমান ডিরেক্টরিতে উপস্থিত সমস্ত লিঙ্কের তালিকা তৈরি করবে।

ls -la /var/www/ | grep "\->"

5
যদি আপনার কাছে " ->" সমন্বিত একটি ফাইল থাকে তবে এটি মিথ্যা ইতিবাচক প্রত্যাবর্তন করবে । একটি সহজ চেষ্টা করুনtouch "foo->"
সিলভাইন পাইনাউ

7
দয়া করে আপনার নিজের উত্তরের অন্য উত্তরের বিষয়বস্তু অনুলিপি করে আটকান না। -1
нιηসেস

3
কেন grepইনগ ইন না ^l?
ইলিরান মালকা

3
স্বাভাবিক হিসাবে, সর্বোত্তম উত্তর সর্বোচ্চ + + সঙ্গে এক
FractalSpace

নিস! B .বাশ_লিয়াস: alias listlinks='ls -l --color | grep "\->"'8-)
ফ্রাঙ্ক নোক

283

পার্সিং lsএকটি খারাপ ধারণা ® , সেক্ষেত্রে একটি সহজ পছন্দ করুন find:

find . -type l -ls

কেবলমাত্র বর্তমান ডিরেক্টরিটি প্রক্রিয়া করতে:

find . -maxdepth 1 -type l -ls

ক্রেডিট: `ls -A` কমান্ড দ্বারা ফিরিয়ে দেওয়া ফাইলের নামগুলি সনাক্ত করার জন্য আমি শেলটিকে কীভাবে তৈরি করব এবং এই নামগুলির মধ্যে স্পেস রয়েছে?


find: Unknown argument to -type: 1
অহনিবিজ্যাকড

15
@ অাহ্নবিজ্যাকড: এটি 1(এক) নয় তবে l(লিঙ্ক)
সিলভাইন পাইনাউ

3
দুর্দান্ত উত্তর! আমি ডিরেক্টরিটিকে এভাবে এভাবে নামতে না পারার জন্য আমার সামঞ্জস্য করেছি: find /<your_directory> -maxdepth 1 -type l -ls 2>/dev/null আপনাকে ধন্যবাদ!
বিগস

3
কেবলমাত্র বর্তমান ডিরেক্টরি (যেমন পুনরাবৃত্তি না ) যুক্ত করুন -maxdepth 1
জোশুয়া পিন্টার 14

1
@ সিগ0 আপনার ব্যবহারের দরকার নেই awk, আপনি সম্ভবত এটি চান:find . -maxdepth 1 -type l | sort -n
sobi3ch

10

ls -laকমান্ড, সমস্ত ফাইল এবং ফোল্ডার এবং সিম্বলিক লিঙ্ক তালিকা প্রদর্শন যদি এই কমান্ড কোনো প্রতীকী ডিরেক্টরি এটা মানে আপনাকে একটি সিম্বলিক লিঙ্ক হবে না প্রদর্শন করা হয় না ওয়ার্ডপ্রেস

চলমান ফলাফল দেখুন ls -la:

kasiya@kasiya-pc:~$ cd /sys/devices/platform/sony-laptop
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ ls -la
total 0
drwxr-xr-x  3 root root    0 Sep  9 19:57 .
drwxr-xr-x 14 root root    0 Sep 10  2014 ..
-r--r--r--  1 root root 4096 Sep  9 22:32 battery_care_health
-rw-r--r--  1 root root 4096 Sep  9 22:32 battery_care_limiter
lrwxrwxrwx  1 root root    0 Sep  9 19:57 driver -> ../../../bus/platform/drivers/sony-laptop
-r--r--r--  1 root root 4096 Sep  9 22:32 modalias
drwxr-xr-x  2 root root    0 Sep  9 22:32 power
lrwxrwxrwx  1 root root    0 Sep  9 22:32 subsystem -> ../../../bus/platform
-rw-r--r--  1 root root 4096 Sep  9 22:32 touchpad
-rw-r--r--  1 root root 4096 Sep  9 19:57 uevent

আপনি দেখতে পাবেন যে সমস্ত প্রতীকী ডিরেক্টরিতে lঅনুমতিগুলির পতাকাগুলির ভিক্ষাবৃত্তিতে অনুমতি রয়েছে। এবং আপনি যদি গ্রিপ নিয়ে থাকেন তবে ^lকেবলমাত্র প্রতীকী ফাইল বা ডিরেক্টরি তালিকাভুক্ত করতে পারেন:

kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ ls -la |grep ^l
lrwxrwxrwx 1 root root    0 Sep  9 19:57 driver -> ../../../bus/platform/drivers/sony-laptop
lrwxrwxrwx 1 root root    0 Sep  9 22:32 subsystem -> ../../../bus/platform
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ 

ড্রাইভার এবং সাবসিস্টেম ডিরেক্টরি এখানে অন্যান্য ডিরেক্টরিতে প্রতীকী লিঙ্ক।


1
এখানে ছোটখাটো স্পেসিফিকেশন ... অনুমতিগুলির স্ট্রিংয়ের প্রথম অক্ষরটি আসলেই কোনও অনুমতি নয়। এটি ফাইল টাইপ। আপনি যেমনটি বলেছেন তার lঅর্থ এটি একটি প্রতীকী লিঙ্ক।
conner.xyz

5

grep তোমার বন্ধু:

ls -lhaF | grep ^l   # list links
ls -lhaF | grep ^d   # list directories
ls -lhaF | grep ^-   # list files

এটি "l" দিয়ে শুরু হওয়া রেখাগুলি তালিকাবদ্ধ করবে যা ডিরেক্টরি এবং ফাইলগুলির জন্য lব্যবহারের জায়গায় পারম কলামের লিঙ্কগুলি উপস্থাপন করেd-



1

কোনও ডিরেক্টরিতে প্রতীকী লিঙ্কগুলি দেখতে:

  1. একটি টার্মিনাল খুলুন এবং সেই ডিরেক্টরিতে যান।

  2. কমান্ডটি টাইপ করুন:

    ls -la
    

    এটি ডিরেক্টরিতে থাকা সমস্ত ফাইল লুকাতে থাকলেও তালিকাভুক্ত করবে।

  3. যে ফাইলগুলি দিয়ে শুরু হয় lতা হ'ল আপনার প্রতীকী লিঙ্ক ফাইল।


1
-1: ক্যাসিয়ার উত্তর ইতিমধ্যে এটি কভার করেছে।
মুরু

1

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

find . -maxdepth 1 -type l -print | cut -c3- | grep -v "\#"

তবে প্রকৃত প্রতীকীভাবে সংযুক্ত আইটেমের মধ্যে পার্থক্য করার জন্য:

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep -v "/" | cut -d' ' -f1

প্রতীকীভাবে সংযুক্ত ফাইলের আইটেমগুলি প্রত্যাবর্তন করে। এবং,

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep "/" | cut -d' ' -f1

প্রতীকীভাবে সংযুক্ত ডায়ারনাম আইটেমগুলি ফিরিয়ে দেয়।


0

টাইপ করুন ls -lai, এটি সমস্ত ফাইল এবং সাব-ডাইরেক্টরিগুলি সম্পর্কিত আনোড সংখ্যার সাথে তালিকাবদ্ধ করবে। আপনি জানেন যে একই ইনোড নম্বরযুক্ত ফাইলগুলি লিঙ্কগুলি (শক্ত বা নরম) এবং এই সমাধানটি প্রতীকী লিঙ্কগুলির জন্যও কাজ করে।


ls -laiকোনও ফাইল এবং এর প্রতীকী লিঙ্কগুলির জন্য একই ইনোড নম্বরটি দেখায় না । হার্ড লিঙ্কগুলির বিপরীতে, প্রতীকী লিঙ্কগুলির নিজস্ব পৃথক ইনোড এন্ট্রি রয়েছে। এটি দেখতে এটির মতোই।
এলিয়াহ কাগন

0

পাইথন দিয়েও করা যায়:

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /path/to/dir

নমুনা রান:

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /etc
/etc/vtrgb
/etc/printcap
/etc/resolv.conf
/etc/os-release
/etc/mtab
/etc/localtime

এটি os.walkফাংশনের মাধ্যমে পুনরাবৃত্ত হওয়ার জন্য বাড়ানো যেতে পারে তবে আমি উপরে দেখিয়েছি বলে একটি একক ডিরেক্টরিতে লিঙ্ক তালিকা তৈরির জন্য সহজ তালিকা প্রজন্মটি ব্যবহার করা যথেষ্ট।

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