Apa yang saya coba lakukan?
Tulis perintah yang mencari file apa pun yang tidak diperlukan oleh file lain di proyek saya.
Apa yang sudah saya coba?
Saya menggunakan find
untuk mendapatkan daftar nama file. Sekarang saya ingin menggunakan nama file sebagai string pencarian (bukan file untuk mencari).
Saya menggunakan find server/lib -type f -exec basename {} \; | cut -f 1 -d '.'
untuk mendapatkan daftar nama file dan menghapus ekstensi file.
Sekarang saya tahu bahwa inilah grep -R --exclude-dir=node_modules <search-string> . -l
yang ingin saya sambungkan ke setiap nama file, tetapi saya tidak tahu bagaimana meneruskannya sebagai <search-string>
argumen.
Info lain
Saya juga samar-samar menyadari bahwa mem-piping ke ini grep
mungkin melewati seluruh hasil dari find
(seluruh daftar file) yang saya jelas tidak ingin melakukannya jika itu yang akan saya lakukan maka katakan padaku.
Juga, (walaupun ini mungkin tidak dalam lingkup pertanyaan ini) karena saya menggunakan ini sebagai cara untuk menemukan nama file yang grep
gagal menemukan apa pun, saran untuk mendapatkan output semacam ini akan sangat dihargai
> <the-command>
filename1
server/lib/foo.js # where these are the list of files in which it appears
test/lib/foo.js
filename2
Not Found! #where `filename2` wasn't found anywhere (obviously)
sumber
xargs -I {}
apa yang saya cari.Dengan
zsh
:**/
globbing rekursif. Fitur yang diperkenalkanzsh
pada awal tahun 90an.(D.:t:r)
adalah glob qualifier,zsh
fitur-spesifik yang memungkinkan memilih file menggunakan atribut selain nama, atau mengubah penyortiran atau melakukan modifikasi pada file yang ditemukan.D
: sertakan dot-file dan lintasi dot-dir seperti yangfind
akan terjadi. Kemungkinan besar, Anda ingin melepasnya..
: hanya file biasa (seperti-type f
difind
):t
,:r
: pengubah riwayat seperti dicsh
/bash
tapi di sini diterapkan ke file globbed.:t
untuk bagian ekor (nama depan),:r
untuk nama akar (ekstensi dihapus).x${^array}
mendistribusikan elemen sepertirc
'sx^$array
ataufish
' sx$array
akan melakukan. Misalnya jika$array
adalah (1
,2
). Itu menjadix1
x2
.${(u)array}
(untuku
nique), hapus duplikat ((u)
menjadi bendera ekspansi parameter).Untuk daftar file yang tidak mengandung string, ganti
-l
dengan-L
( dengan asumsi GNUgrep
, tetapi Anda sudah menggunakan opsi spesifik GNU di sini).-F
adalah untuk pencarian string tetap (karena Anda mungkin tidak ingin nama-nama proyek diperlakukan sebagai regexps). Anda mungkin juga ingin melemparkan-w
opsi untukgrep
untuk pencocokan kata sehinggafoo
tidak cocokfoobar
misalnya (masih akan tetap cocokfoo-bar
).sumber
projects=(server/lib/**/*(D.:t:r))
memproduksi array seperti itu di zsh. Namun saya sekarang perlu daftar file di managrep
gagal menemukan apa pun. Saya kira saya perlu menangkap kode keluar 0 / false?-L
di akhir jawaban-l
memberi tahu saya di mana hasil pencarian itu dan-L
memberi tahu saya di mana itu tidak ditemukan. Tapi saya ingin tahu daftar istilah pencarian yang tidak ditemukan di mana pun dan bukan di mana mereka / tidak ditemukan