GNU/Linux >> Belajar Linux >  >> Linux

Menambahkan stempel waktu ke nama file dengan mv di BASH

Beberapa baris yang Anda posting dari skrip Anda terlihat oke bagi saya. Itu mungkin sesuatu yang sedikit lebih dalam.

Anda perlu menemukan baris mana yang memberi Anda kesalahan ini. Tambahkan set -xv ke bagian atas skrip Anda. Ini akan mencetak nomor baris dan perintah yang dijalankan ke STDERR . Ini akan membantu Anda mengidentifikasi di bagian skrip mana Anda mendapatkan kesalahan khusus ini.

BTW, apakah Anda memiliki shebang di bagian atas skrip Anda? Ketika saya melihat sesuatu seperti ini, saya biasanya berharap ini adalah masalah dengan Shebang. Misalnya, jika Anda memiliki #! /bin/bash di atas, tetapi penerjemah bash Anda berada di /usr/bin/bash , Anda akan melihat kesalahan ini.

EDIT

Pertanyaan baru:Bagaimana cara menyimpan file dengan benar, untuk menghindari keharusan melakukan perbaikan ini setiap kali saya mengirim ulang file?

Dua cara:

  1. Pilih Edit->Konversi EOL->Format Unix item menu saat Anda mengedit file. Setelah memiliki akhiran baris yang benar, Notepad++ akan menyimpannya.
  2. Untuk memastikan semua file baru memiliki akhiran baris yang benar, buka Pengaturan->Preferensi item menu, dan tarik Preferensi kotak dialog. Pilih Dokumen Baru/Direktori Default tab. Di bawah Dokumen Baru dan Format , pilih Unix tombol radio. Klik tombol Tutup tombol.

Saya menggunakan perintah ini untuk memutar file sederhana:

mv output.log `date +%F`-output.log

Di folder lokal saya punya 2019-09-25-output.log


mv server.log logs/$(date -d "today" +"%Y%m%d%H%M").log

Metode satu baris dalam bash berfungsi seperti ini.

[beberapa keluaran]>$(date "+%Y.%m.%d-%H.%M.%S").ver

akan membuat file dengan nama stempel waktu dengan ekstensi ver. Pemotretan daftar file yang berfungsi ke nama file stempel tanggal sebagai berikut dapat menunjukkannya berfungsi.

find . -type f -exec ls -la {} \; | cut -d ' ' -f 6- >$(date "+%Y.%m.%d-%H.%M.%S").ver

Tentu saja

cat somefile.log > $(date "+%Y.%m.%d-%H.%M.%S").ver

atau bahkan lebih sederhana

ls > $(date "+%Y.%m.%d-%H.%M.%S").ver


Linux
  1. Alias ​​​​dengan variabel di bash

  2. Menambahkan ke $PYTHONPATH dengan skrip bash

  3. Menjalankan skrip bash atau biner c pada sistem file dengan opsi noexec

  1. Basa'?

  2. Bash -c Dengan Parameter Posisi?

  3. Ganti Nama Mass File Bash Dengan Penghitung?

  1. Membaca Baris Dari File Dengan Bash:Untuk Vs. Ketika?

  2. Peringatan dengan nftw

  3. Dapatkan dirname/nama file terakhir dalam argumen jalur file di Bash