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
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:
Buka terminal dan pindah ke direktori itu.
-
Ketik perintah:
ls -la
Ini akan panjang daftar semua file dalam direktori bahkan jika mereka tersembunyi.
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