GNU/Linux >> Belajar Linux >  >> Linux

membuat direktori dari nama file dan memindahkan bash

Tidak ada spasi kosong yang diperbolehkan di sekitar = dalam tugas.

dir="${file%%.*}"

Sebaliknya, spasi putih diperlukan dalam ujian.

if [ -e $dir ]; then
    ^       ^

Sejauh peningkatan gaya, tidak ada salahnya untuk melakukan mkdir -p yang tidak perlu , sehingga Anda dapat membuang if pernyataan.

Kutipan tidak diperlukan dalam tugas, jadi Anda dapat menghapusnya dari dir= garis. Mengutip adalah ide bagus di tempat lain, jadi jangan hapus kutipan lainnya.

Mungkin bagus untuk menambahkan .* tambahan ke loop for. Dengan begitu, jika Anda menjalankan skrip lebih dari sekali, skrip tidak akan mencoba memindahkan subdirektori yang baru dibuat tersebut. Dan trik yang rapi (walaupun belum tentu perbaikan) adalah mempersingkat BR*.* W0*.* ke {BR,W0}*.* .

for file in {BR,W0}*.*; do
    dir=${file%%.*}
    mkdir -p "$dir"
    mv "$file" "$dir"
done

Linux
  1. Membuat, Menghapus, dan Mengelola Direktori di Linux

  2. Bagaimana Memindahkan Semua File (termasuk Tersembunyi) Dari Satu Direktori Ke Yang Lain?

  3. Dapatkan Jalur Lengkap Dari Dalam Skrip Bash?

  1. Mengekstrak Nama Dari Nama File Di Bash?

  2. Bagaimana cara memindahkan (dan menimpa) semua file dari satu direktori ke direktori lain?

  3. Mengapa tautan simbolis saya membuat file dan bukan folder?

  1. Hapus semua karakter khusus dan huruf besar-kecil dari string di bash

  2. Ekspor variabel dari bash dan gunakan dengan Python

  3. Cegah 10.2 membuat direktori Wolfram Mathematica di Linux