saya sudah
link -> file
Saya lakukan
find -L . -name 'link'
Dan dapatkan
./link
Mengapa demikian?
man find mengatakan:
-L: Ikuti tautan simbolis. Ketika menemukan memeriksa atau mencetak informasi tentang file, informasi yang digunakan harus diambil dari properti file yang ditunjuk oleh tautan, bukan dari tautan itu sendiri (kecuali jika itu adalah tautan simbolis atau temuan tidak dapat memeriksa file tersebut. ke mana tautan menunjuk).
Aturan umum adalah bahwa jika suatu perintah beroperasi pada tautan (yaitu entri direktori, yang merupakan penunjuk ke inode) maka perintah tersebut memperlakukan symlink sebagai dirinya sendiri alih-alih sebagai objek yang ditunjuk tautan. Kalau tidak, perintah beroperasi pada titik symlink. Dengan demikian
cp
mengikuti symlink secara default dan menyalin isi file yang ditunjuk oleh tautan. Tetapi ketika Anda memintacp
untuk berurusan dengan entri direktori dengan menentukan-R
, itu berhenti mengikuti symlink.mv
selalu berfungsi dengan entri direktori, sehingga tidak pernah mengikuti symlink.The
find
aktivitas normal perintah adalah untuk beroperasi pada entri direktori, sehingga symlink tidak diikuti secara default. Menambahkan-L
penyebabfind
mengikuti symlink untuk semua properti kecuali yang tidak dapat diabaikan ketika melakukan pencarian direktori, namanya. Salah satu tujuannyafind -name
adalah untuk memberikan input untuk perintah sepertimv
danrm
, yang beroperasi pada entri direktori. Akan ada hasil yang tidak menyenangkan dan mengejutkan jikafind -L dir -name
bisa menghasilkan nama yang menunjuk di luar pohon direktoridir
.sumber
There would be unpleasant and surprising results if
find -L dir -name` dapat menghasilkan nama-nama yang menunjuk di luar pohon direktori yang berakar pada dir.` => bukankah seharusnya begitu: akan ada yang tidak menyenangkan ... jikafind dir -name pattern
...? karena menambahkan -L memungkinkan menunjuk ke dir luarcp -R
menyalin barang di bawah symlink?