Kecualikan file saat mengunggah direktori

0

Saya telah menulis skrip shell sederhana yang digunakan ncftpputuntuk mengunggah semua direktori secara rekursif ke direktori jarak jauh. Skrip shell saya, upload.shditempatkan di direktori lokal ini dan saya ingin mengecualikannya dari unggahan. Apakah ada cara untuk melakukan ini?

ncftpput -R -v -u myUsername -p myPassword myAddress /remoteDir /localDir/*

Saya sudah mencoba melakukannya seperti ini:

for i in `ls /localDir | grep -v upload.sh`; do
  ncftpput -R -v -u myUsername -p myPassword myAddress /remoteDir /localDir/$i
done

Tetapi direktori dengan spasi akan dianggap dua direktori. Misalnya "Direktori Saya" akan dipertimbangkan:

  1. / localDir / My
  2. / localDir / Direktori
SimonBS
sumber

Jawaban:

2

Itulah sebabnya Anda seharusnya tidak melewatkan output darils . Apalagi jika Anda bisa melakukan hal yang sama dengan wildcard sederhana.

#! / usr / bin / env bash

untuk saya di / localDir / * ; do
     [["$ i" = * / upload.sh]] && lanjutkan
    ncftpput -R -v -u myUsername -p myPassword myAddress / remoteDir "$ i"
selesai
grawity
sumber
Saya tidak memikirkan itu. Itu cara sederhana namun bagus untuk melakukannya.
SimonBS
5

Anda dapat menggunakan find untuk mengunggah semua elemen lain secara terpisah:

find /localDir -mindepth 1 -maxdepth 1 ! -name "upload.sh" -exec ncftpput -R -v -u myUsername -p myPassword myAddress /remoteDir {} \;

Lewati -execdan semuanya setelah itu untuk hanya mencetak file dan folder yang cocok, untuk pengujian ..


Anda juga bisa melihat mendefinisikan ulang IFSdi bash, atau yang setara di shell Anda, tetapi itu masih akan gagal dengan nama file yang berisi misalnya baris baru.

Tentu saja, solusi paling sederhana adalah dengan tidak mencampur skrip pengunggah dengan data yang akan diunggah ...

Daniel Beck
sumber
Bukan berarti FTP bekerja sama sekali dengan nama file yang mengandung baris baru ...
grawity
Contoh Anda menggunakan find sempurna. Tentu saja, saya dapat memiliki skrip pengunggah di luar direktori tetapi karena saya memiliki lebih banyak direktori dengan skrip unggahan yang terpisah, saya ingin memilikinya di dalam direktori. Terima kasih banyak atas bantuan Anda.
SimonBS