Saya memiliki direktori dengan banyak file dan direktori di dalamnya. Untuk merapikannya, saya akan meletakkan semua file itu ke direktori, jadi saya akan melakukan sesuatu seperti ini:
$ ls | wc -l
123
$ mkdir new_directory
$ mv * ./new_directory
Namun itu jelas tidak akan berhasil karena itu akan mencoba untuk pindah new_directory
ke new_directory
. Apakah ada cara sederhana untuk melakukan apa yang saya inginkan dalam satu baris tanpa saya harus menyalin dan menempelkan semua file dan direktori di direktori itu?
Jawaban:
Anda
perintah sebenarnya akan bekerja; itu hanya akan mencetak peringatan bahwa itu tidak bisa memindahkan direktori itu ke dalam dirinya sendiri.sumber
git mv
Anda harus menggunakan-k
flag, karena git akan gagal secara default, tidak hanya memuntahkan peringatan. Jadi, Anda harus melakukannyagit mv -k * ./new_dir
.Oneliner cepat dan kotor.
sumber
Jika Anda hanya mencari file (mis. Bukan direktori), maka
adalah solusi paling portabel. Untuk kecepatan, Anda harus memindahkan find dan xargs, dengan -print0 dan -0, tetapi hanya jika Anda memiliki GNU find dan xargs.
sumber
find
- meskipun aku sudah pasti berada di sistem yang tidak memiliki satu, sedih :(Saat saya mengalami masalah ini, saya telah melakukan salah satu dari yang berikut:
atau
Bentuk kedua mengambil keuntungan dari wildcard melewatkan nama file yang dimulai dengan '.'
sumber
bagaimana dengan:
TKI, jangan pindahkan konten ke direktori baru, tetapi letakkan direktori ini di dalam yang baru.
sumber
Dengan cara yang mirip dengan jawaban @ Rembrane (meskipun bukan satu-liner):
Ini harus 100% portabel - meskipun
find
sayangnya tidak ada di sistem Anda.sumber
Saran saya: Seperti yang dinyatakan oleh orang lain
akan bekerja menemukan IFF total ekspansi cukup pendek.
Selain itu, Anda dapat mencoba yang ini untuk meningkatkan jumlah file yang jauh lebih besar:
Penjelasan
sumber
-print0
dan-0
dan masih istirahat.Menggunakan:
Dari
xargs
halaman manual:sumber
Untuk menghindari pesan kesalahan dan membuatnya tetap sederhana:
akan melakukan hal yang sama tetapi menghindari pesan kesalahan (kecuali jika Anda memiliki titik di nama folder Anda, saya kira).
sumber