Ini mirip dengan pertanyaan ini , tetapi saya ingin memasukkan path relatif ke direktori saat ini di unix. Jika saya melakukan hal berikut:
ls -LR | grep .txt
Itu tidak termasuk path lengkap. Sebagai contoh, saya memiliki struktur direktori berikut:
test1/file.txt
test2/file1.txt
test2/file2.txt
Kode di atas akan kembali:
file.txt
file1.txt
file2.txt
Bagaimana saya bisa memasukkan path relatif ke direktori saat ini menggunakan perintah Unix standar?
find
atautree
. Saya ssh'ing ke perangkat android di mana saya tampaknya hanya punyals
, dan tidak ada alat-alat lain ini: /Jawaban:
Gunakan temukan:
Pada sistem yang menggunakan GNU find, seperti kebanyakan distribusi GNU / Linux, Anda dapat meninggalkan -print.
sumber
find $(pwd) -name \*.txt
-path "*docs/*.txt"
sebagai ganti-name
.-wholename
sama seperti-path
-type f
untuk hanya mengembalikan file dan bukan direktori, tautan simbolik, dll.-name "*.txt"
TIDAK akan cocokfile.TXT
- selalu gunakan-iname "*.txt"
yang case-sensitive.Gunakan
tree
, dengan-f
(jalur penuh) dan-i
(tanpa garis lekukan):Anda kemudian dapat menggunakan
grep
untuk menyaring yang Anda inginkan.Jika perintah tidak ditemukan, Anda dapat menginstalnya:
Ketik perintah berikut untuk menginstal perintah pohon di RHEL / CentOS dan Fedora linux:
Jika Anda menggunakan Debian / Ubuntu, ketik Linux Mint dengan perintah berikut di terminal Anda:
sumber
Coba
find
. Anda dapat mencarinya persis di halaman manual, tapi agak seperti ini:find [start directory] -name [what to find]
jadi untuk contoh Anda
find . -name "*.txt"
harus memberi Anda apa yang Anda inginkan.
sumber
Anda bisa menggunakan find sebagai gantinya:
sumber
Begini caranya:
ls -R1 $PWD | while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done | grep -i ".txt"
Tapi itu dilakukan dengan "berbuat dosa" dengan penguraian
ls
, yang dianggap bentuk buruk oleh komunitas GNU dan Ghostscript.sumber
ls
karena biasanya mengarah ke bug. Kalimat tersebut mencoba untuk memanggilnya. Itu juga memiliki lelucon di dalamnya yang telah saya hapus.'sed' akan menghapus 'your_path' dari semua hasil 'find'. Dan Anda menerima relatif terhadap jalur 'DIR'.
sumber
Untuk mendapatkan nama file path lengkap aktual dari file yang diinginkan menggunakan perintah find, gunakan dengan perintah pwd:
sumber
Berikut ini skrip Perl:
pemakaian:
sumber
Anda dapat membuat fungsi shell, misalnya di Anda
.zshrc
atau.bashrc
:Yang pertama hanya bekerja pada satu file saja.
sumber
Temukan file yang disebut "nama file" pada sistem file Anda memulai pencarian dari direktori root "/". "Nama file"
sumber
Jika Anda ingin menyimpan detailnya datang dengan ls seperti ukuran file dll di output Anda maka ini harus bekerja.
sumber
Di shell ikan , Anda dapat melakukan ini untuk mendaftar semua pdf secara rekursif, termasuk yang ada di direktori saat ini:
Hapus saja 'pdf' jika Anda ingin file jenis apa pun.
sumber
Anda dapat mengimplementasikan fungsi ini seperti ini.
Pertama, menggunakan perintah ls yang diarahkan ke direktori yang ditargetkan. Kemudian menggunakan perintah find, saring hasil dari itu. Dari kasus Anda, sepertinya - selalu nama file dimulai dengan sebuah kata
file***.txt
sumber
Di mycase, dengan perintah pohon
Jalur relatif
Jalan absolut
sumber