GNU/Linux >> Belajar Linux >  >> Linux

Temukan file lalu cd ke direktori itu di Linux

Berikut ini harus lebih aman:

cd -- "$(find / -name ls -type f -printf '%h' -quit)"

Keuntungan:

  • Danda hubung mencegah penafsiran nama direktori yang dimulai dengan tanda hubung sebagai opsi (find tidak menghasilkan nama file seperti itu, tetapi tidak berbahaya dan mungkin diperlukan untuk konstruksi serupa)
  • -name periksa sebelum -type periksa karena yang terakhir terkadang membutuhkan stat
  • Tidak dirname diperlukan karena %h specifier sudah mencetak nama direktori
  • -quit untuk menghentikan pencarian setelah file pertama ditemukan, sehingga tidak ada head diperlukan yang akan menyebabkan skrip gagal pada nama direktori yang berisi baris baru

Anda dapat menggunakan sesuatu seperti:

pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"
pax[/usr/bin]> _

Ini akan menemukan ls pertama file biasa lalu ubah ke direktori itu.

Dalam hal apa yang dilakukan setiap bit:

  • Penemuan akan dimulai pada / dan cari ke bawah, buat daftar semua file biasa (-type f ) disebut ls (-name ls ). Ada hal lain yang dapat Anda tambahkan ke find untuk lebih membatasi file yang Anda dapatkan.
  • Penyaluran melalui head -1 akan memfilter semua kecuali yang pertama.
  • $() adalah cara untuk mengambil output dari perintah dan meletakkannya di baris perintah untuk yang lain perintah.
  • dirname dapat mengambil spesifikasi file lengkap dan memberi Anda bit path.
  • cd hanya mengubah ke direktori itu.

Jika Anda menjalankan setiap bit secara berurutan, Anda dapat melihat apa yang terjadi:

pax[/home/pax]> find / -type f -name ls
/usr/bin/ls

pax[/home/pax]> find / -type f -name ls | head -1
/usr/bin/ls

pax[/home/pax]> dirname "$(find / -type f -name ls | head -1)"
/usr/bin

pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"

pax[/usr/bin]> _

Linux
  1. Cara menemukan File di Linux

  2. Dapatkan file terbaru di direktori di Linux

  3. Bagaimana cara menyalin file/folder dari direktori home pengguna lain di Linux?

  1. Cara Menemukan File Di Linux Di Semua Direktori Secara Rekursif

  2. Cara Menemukan Paket Yang Menyediakan File Tertentu Di Linux

  3. Cara Menemukan File Terlama Di Pohon Direktori Di Linux

  1. Linux – Bagaimana Menemukan Tanggal Pembuatan File?

  2. Lembar contekan Izin File/Direktori Linux

  3. Bagaimana saya bisa menemukan file/direktori yang bisa berada di mana saja di baris perintah linux?