Saya ingin membuat direktori dengan nomor di bagian akhir, ex "dir1", dan menambahkan nomor itu jika direktori sudah ada sampai menyentuh nama direktori yang tidak ada, dan saya perlu melakukan ini dalam satu baris di baris perintah Linux, sesuatu seperti:
mkdir --increment dir$
Bagaimana saya bisa melakukan itu?
Sejauh ini saya sudah mendapat ini:
dir=output; n=0; mkdir -p $dir$n; if test -d $dir$n; then n=$((n+1)); echo $dir$n; fi
Tapi itu hanya menggemakan nama dir berikutnya, saya membutuhkannya secara rekursif menjalankan perintah.
sumber
Jika Anda hanya ingin secara bertahap membuat direktori yang terdaftar dalam urutan yang benar, dapatkah saya merekomendasikan folder yang diberi nama berdasarkan tanggal saat ini?
Ini akan membuat direktori dengan nama-nama seperti
dir-2014-03-02
(YYYY-MM-DD
, sehingga muncul dalam urutan abjad).Jika Anda membuat lebih dari satu direktori per hari, Anda dapat menambahkan waktu saat ini ke nama file. Lihat
man date
bagaimana cara mengubah format outputdate
.sumber
cari dirname "terbesar" terlebih dahulu, dapatkan nomor dan selisihnya:
sumber
printf
sini? Bukankahecho
pekerjaan sederhana ?dir[0-9]*
sebagai gantinyadir*
.Dengan asumsi direktori Anda selalu dimulai pada "dir1", dan bahwa tidak ada file bernama $ dir * (iE mereka semua direktori nomor berurutan), Anda dapat pergi dengan liner satu ini -
Ini menghitung jumlah file yang dimulai dengan $ dir, kemudian menambahkan satu ke nomor itu dan membuat file baru.
sumber
Tambahan untuk jawaban lain: Jika Anda perlu dir untuk mengurutkan dengan benar berdasarkan nama, Anda mungkin juga ingin memasukkan nomor dir (NUM) baru dengan memimpin nol ke panjang tetap.
Berikut ini dapat diringkas ke satu baris atau disematkan di salah satu solusi lain.
Ini mengasumsikan bahwa NUM dimulai setidaknya 1 digit panjang dan tidak akan melebihi panjang tetap. Sesuaikan dengan kebutuhan Anda.
sumber