Cara membuat daftar semua tautan simbolis dalam direktori

Saya memiliki tautan simbolis di saya /var/www/ direktori yang link ke WordPress. Ketika saya menjalankan perintah ls -la dari /var/www/ direktori tautan ke WordPress tidak muncul. Apakah ada cara untuk membuat daftar semua tautan simbolis yang ada di direktori?

Parsing ls adalah Ide Buruk®, lebih suka yang sederhana find dalam hal ini:

find . -type l -ls

Untuk hanya memproses direktori saat ini:

find . -maxdepth 1 -type l -ls

Kredit: Bagaimana cara membuat shell mengenali nama file yang dikembalikan oleh perintah 'ls-a', dan nama-nama ini berisi spasi?

Anda dapat menggunakan grep dengan ls perintah untuk mencantumkan semua tautan simbolis yang ada di direktori saat ini.

Ini akan mencantumkan semua tautan yang ada di direktori saat ini.

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

grep apakah teman Anda:

ls -lhaF | grep ^l   # list linksls -lhaF | grep ^d   # list directoriesls -lhaF | grep ^-   # list files

Ini akan mencantumkan baris yang dimulai dengan "l" yang mewakili tautan di kolom perms sebagai pengganti l gunakan d untuk direktori dan - untuk berkas

POSIXly:

find ! -name . -prune -type l

Ini mengembalikan semua item yang ditautkan secara simbolis (baik dirs & fns) dalam direktori:

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

Namun, untuk membedakan antara jenis item yang ditautkan secara simbolis:

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

Pengembalian simbolis terkait item nama file saja. Dan,

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

Mengembalikan item dirname yang ditautkan secara simbolis saja.

Untuk melihat tautan simbolis dalam direktori:

  1. Buka terminal dan pindah ke direktori itu.

  2. Ketik perintah:

    ls -la

    Ini akan panjang daftar semua file dalam direktori bahkan jika mereka tersembunyi.

  3. File yang dimulai dengan l adalah file tautan simbolis Anda.

Jenis ls -lai, ini akan mencantumkan semua file dan subdirektori dengan nomor inode yang sesuai.Anda tahu file dengan nomor inode yang sama adalah tautan(keras atau lunak) dan solusi ini juga berfungsi untuk tautan simbolis.

Dapat dilakukan dengan python juga:

$ 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

Contoh run:

$ 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

Ini dapat diperpanjang menjadi rekursif melalui os.walk fungsi, tetapi cukup menggunakan pembuatan daftar sederhana untuk mencantumkan tautan dalam satu direktori seperti yang saya tunjukkan di atas.

Mohon temukan di bawah satu perintah skrip bash liner untuk menemukan semua tautan simbolik yang rusak secara rekursif di OS berbasis linux apa pun

b=$(find / -type l); for i in $(echo $b); do file $i ; done |grep -i broken 2> /dev/null

menggunakan zsh

ls -l *(@)lrwxrwxrwx 1 david david 15 Nov 18 22:35 gvimrc -> /etc/vim/gvimrclrwxrwxrwx 1 david david 13 Nov 18 22:19 mydomains.php -> mydomains.php