Unix menemukan tidak bekerja dengan wildcard di jalan ketika ssh'ing


3

Perintah ini dengan * di jalur temukan berfungsi dengan baik di server lokal

Svr1$ find /path/*/foo/ -name "*20160208"

Ketika saya mencoba ini dari jarak jauh dari server lain itu tidak berfungsi

Svr2$ ssh Svr1 find '/path/*/foo/' -name "*20160208*"

Pesan kesalahan adalah:

find: stat() error /path/*/foo/: No such file or directory

Namun, jika saya mengubah jalur pencarian untuk menghindari penggunaan * itu berfungsi dengan baik. Seperti ini:

Svr2$ ssh Svr1 find '/path/' -name "*20160208*"

Ada yang tahu apa yang saya lakukan salah?

Terimakasih banyak.


membintangi tanda kutip membuatnya harfiah
barlop

bagaimana jika Anda mengubah '/path/*/foo/'ke /path/*/foo/?
barlop

Sebenarnya, itulah yang saya miliki pada awalnya dan tidak berhasil. Saya mengajukan pertanyaan di sini dan diberitahu untuk memberi tanda kutip pada path. Itu masih tidak berfungsi dan saya kehabisan ide.
LLJ

Jawaban:


4

Masalah Anda adalah bahwa perintah find tidak menginterpolasi / menafsirkan globe glob (s) (daftar direktori yang harus dicari di bawah), itu hanya menginterpolasi pola sebagai bola yang harus cocok. Apa yang mengartikan direktori glob adalah shell itu sendiri yang Anda jalankan temukan di dalamnya. Ketika Anda menjalankan find via ssh, tidak ada shell untuk melakukan pekerjaan ini.

Untungnya, tidak ada aturan untuk tidak menjalankan shell melalui ssh dan membuat shell itu menjalankan perintah Anda dengan semua hal yang diperlukan diinterpolasi dan sisa wildcard disimpan untuk menemukan dirinya sendiri.

Sesuatu seperti apa yang saya gunakan pada mesin saya:

ssh lx@localhost "bash -c '/usr/bin/find /tmp/d* -name \"f*\" '"
lx@localhost's password:
/tmp/d1/f1
/tmp/d2/f2

0

Cara Anda menulisnya dievaluasi pada host lokal, yang biasanya sesuatu yang tidak Anda inginkan. Anda perlu menghindari urutan untuk membiarkannya mengevaluasi pada host lain. Sesuatu seperti ini harus melakukan itu:

Svr2$ ssh Svr1 "find /path/*/foo/ -name \"*20160208*\""
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.