GNU/Linux >> Belajar Linux >  >> Linux

Kutipan Di Dalam Kutipan Balik Di Dalam Kutipan Di Ksh?

Saya mencoba mendapatkan file tanggal saat ini dengan perintah berikut di HP-UX Unix:

$ ls -lrt ABC.LOG* |grep "`date +"%b %d"`"

Tapi, itu memberi saya kesalahan:

ksh: : cannot execute
grep: can't open %d

Ada saran?

Jawaban yang Diterima:

Kesalahan berasal dari kutipan argumen grep dan fakta bahwa backtick tidak dapat bersarang dengan baik:

grep "`date +"%b %d"`"

Ini lebih baik ditulis sebagai

grep "`date +'%b %d'`"

… atau bahkan lebih baik,

grep "$(date +'%b %d')"

Bahkan, dengan $(...) alih-alih backticks, Anda harus dapat mempertahankan tanda kutip ganda dalam:

grep "$(date +"%b %d")"

Alternatif untuk menangkap output ls akan dilakukan

find . -type f -name "ABC.LOG*" -ctime -1

Ini akan menemukan semua file biasa (-type f ) di direktori saat ini yang namanya cocok dengan pola yang diberikan dan yang waktunya kurang dari 24 jam sejak waktu saat ini . Waktu file adalah waktu saat modifikasi terakhir dari data atau metadata file dibuat.

Ini tidak persis setara dengan apa yang Anda coba capai. Ini juga berulang menjadi subdirektori.


Linux
  1. Mengapa The Tilde (~) Tidak Memperluas Di Dalam Kutipan Ganda?

  2. Mengapa Halaman Man Unix Menggunakan Double Backticks Di Tempat Dari Kutipan Ganda?

  3. Wildcard Di Dalam Kutipan?

  1. Grep:Memori Habis?

  2. Potong / Grep Dan Df -h?

  3. Menggunakan grep untuk mencari secara terbalik

  1. Grep -v Perilaku Tak Terduga?

  2. Bagaimana cara saya grep secara rekursif?

  3. Cara grep \n dalam file