Saya tidak harus memindahkan folder, hanya file.
Saya sudah mencoba mv *
tetapi perintah ini juga memindahkan folder.
command-line
files
mv
Archit
sumber
sumber
find ... -exec mv -t "$TARGET_DIR" -- '{}' +
akan lebih aman (kalau$TARGET_DIR
- kalau tidak ada direktori atau pertandingan dimulai-
) dan lebih efisien (karena tidak menghasilkan sub-proses baru untuk setiap file yang cocok).Saya pikir Anda ingin hanya mv file Anda. Pertama pergi ke direktori Anda dan gunakan perintah ini, ganti $ TARGET dengan jalur direktori target Anda. Jika Anda ingin menyalin file Anda ganti
mv
dengancp
.jika saya menjelaskan ini,
find . -type f
berarti memilih semua file dan-exec mv {} $TARGET \;
berarti menjalankanmv
perintah untuk semua item yang dipilih.Jawaban sebelumnya memiliki kesalahan ..
mv
semua file di dalam sub direktori juga. Perbaikan cepat digunakan-maxdepth 1
. Maka itu bukanmv
file secara rekursif dalam sub direktori. Di bawah ini adalah yang benar ..sumber
-type f
tidak mencegah rekursi.Pendekatan python
Ketika berurusan dengan file secara rekursif,
find
adalah cara untuk pergi. Dalam kasus khusus ini tidak perlu, tetapi dapat digunakan dengan-maxdepth 1
jawaban lain yang ditunjukkan.Perintah python sederhana dapat melakukannya juga. Ini sebuah contoh:
Bagaimana ini bekerja:
fl=[f for f in os.listdir('.') if os.path.isfile(f)]
mengulangi semua item yangos.listdir('.')
ditemukan dan kami menguji apakah item tersebut adalah file yang menggunakanos.path.isfile()
fungsi.Setelah
fl
daftar file dibangun, kami menggunakanmap()
fungsi. Fungsi ini membutuhkan dua argumen - fungsi, dan daftar item; itu akan melakukan fungsi yang kami berikan per setiap file dalam daftar. Jadi di sini kita memilikilambda x:shutil.move(x,'./a_directory')
fungsi anonim yang akan memindahkan file yang diberikan ke direktori yang diberikan, dan kemudian kita memilikifl
- daftar file yang kita buat.Untuk keterbacaan dan penggunaan umum, kita juga bisa menulis ulang ini sebagai skrip python umum, yang mengambil dua argumen - direktori sumber dan subdirektori tujuan.
Dan penggunaannya seperti ini:
sumber
Jika Anda menggunakan zsh sebagai ganti bash, Anda dapat melakukan ini:
Pada
(.)
akhirnya disebut kualifikasi glob; bagian.
dalam secara khusus berarti hanya mencocokkan file biasa.Melakukannya
mv *(.) "$target"
cepat dan praktis. Namun, jika Anda melakukan ini sebagai bagian dari skrip, Anda mungkin ingin mempertimbangkan untuk menulis sesuatu seperti yang disarankan Frxstrem dan David Forestermv -t "$target" -- *(.)
,, untuk menangani kasus sudut yang lebih baik yang mungkin muncul dalam penggunaan orang lain.sumber
mv -t "$TARGET" -- "$SOURCE"/*(.)
akan lebih aman (kalau-kalau"$TARGET"
dimulai dengan-
atau bukan direktori). Saya suka solusi zsh!Untuk memindahkan semuanya kecuali direktori dari
source-dir
direktori kedestination-dir
direktori, dengan Python:Lihat Menjalankan File Python di Terminal .
sumber
import mypackage
sebelumfrom mypackage import ...
from __future__
impor khusus danfrom pathlib
impor biasa .import module
harus menjadi yang pertama (yang merupakan perpustakaan dan impor pihak ketiga)from module import object
harus menjadi yang terakhir (khusus lokal / perpustakaan)Saya akan menggunakan
ini akan berfungsi selama folder Anda tidak memiliki ekstensi.
sumber