komentar Anda menyebutkan batasan tambahan: perintah tidak boleh memindahkan file tersembunyi dari direktori kerja saat ini. jika ini benar, bisakah Anda mengedit pertanyaan Anda untuk menyebutkan ini? mengatakan "pindahkan file saja" membuat kita berpikir "pindahkan semua file", yang termasuk file tersembunyi.
Wow, seseorang yang tahu cara menggunakan find. Untuk kelengkapan Anda harus menggunakan -nama [^.] * Dalam find, yaitu --- find. -maxdepth 1 -type f -name [^.] * -exec mv {} path \;
chris
JANGAN SALIN-PASTE INI KE SHELL ANDA. Tanda titik koma akan menyebabkannya dieksekusi segera. :)
Sherwood Callaway
@ SherwoodCallaway Tanda titik koma adalah untuk menandai akhir dari-exec
dstonek
4
Saya seorang "menggunakan palu untuk semuanya" agak jadi saya menggunakan program shell bourne untuk hal-hal lain menggunakan program eksternal untuk ...
for file in * .*
do
test -f "$file" && mv "$file" "$HOME"/
done
Beberapa orang suka menyelesaikan sesuatu dengan mengetik sesedikit mungkin tapi saya pengetik yang cukup cepat dan saya punya hal-hal seperti ini tertanam dalam otak saya sehingga tidak terlalu merepotkan untuk melakukan ini daripada mencari yang tepat argumen untuk menemukan dan mengeksekusi dan semua itu.
terima kasih untuk itu saya akan mencobanya. tetapi saya masih membutuhkan jawaban lain karena untuk proyek saya lakukan di linux saja. terima kasih banyak
1
Ini adalah jawaban untuk pertanyaan Anda. mv tidak memiliki pemahaman tentang file atau direktori atau fifos atau file khusus lainnya. mv hanya memahami entri direktori dan inode, dan sejauh yang berkaitan, semuanya tetap sama terlepas dari jenis file. Untuk memungkinkan mv hanya memindahkan jenis file tertentu, Anda perlu sesuatu seperti tes atau temukan yang benar-benar dapat melihat inode untuk melihat apa file tersebut. Dengan kata lain, Anda ditanya pertanyaan jebakan jika Anda diminta melakukannya hanya dengan mv.
chris
1
Dan saya katakan bahwa mv mengerti inode hanya karena ia dapat memindahkan file dari satu filesystem ke yang lain, yang secara teknis cp lalu rm, bukan mv (yang sebenarnya hanya ln lalu rm). Lihat entri tautan dan direktori.
chris
2
shorty: Ini adalah jawaban yang bagus, Anda harus menggunakan sesuatu selain perintah mv (setidaknya shell). Ini tentang dasar karena tanpa pemrograman.
Kyle Brandt
3
@Mereghost sangat dekat. Inilah yang saya bisa untuk memindahkan semua file (termasuk file tersembunyi), tetapi tidak direktori:
The .setelah menemukan mengasumsikan Anda direktori saat ini adalah sumber dari file yang ingin Anda bergerak. Jika tidak, perintah dapat direvisi, sebagai berikut:
ya, itu bekerja tetapi tidak 100% menyalin semua file dari direktori dan sub direktori ke ~ / lokasi. saya butuh sesuatu yang sangat mendasar yang menyalin file tanpa file tersembunyi dari direktori saya ke direktori lain. itu dia. terima kasih atas sarannya
Itu tidak mungkin dengan maxdepth sebagai 1.
John T
diperbaiki sehingga tidak akan menyalin file tersembunyi.
John T
1
Sintaks pada find adalah find maka direktori kemudian deskripsi operasi dan hal-hal yang cocok. Satu akan biasanya tidak pernah menggunakan seperti wildcard seperti menemukan * tanpa melindunginya dari globbing (yaitu menemukan / path / ke / direktori -name goo * -type f.
chris
1
Temukan hanya berfungsi dengan baik jika Anda memberikan satu jalur untuk memeriksa. Dalam contoh Anda, misalnya, jika ada file yang diawali dengan a - find akan meledak secara tak terduga. Anda selalu jauh lebih baik hanya memiliki satu program untuk membaca entri direktori, dan dalam contoh Anda, Anda agak menggunakan dua program yang berbeda (temukan dan shell).
Ini akan gagal untuk semua file yang berisi spasi putih di namanya. Output dari perintah yang mencetak nama file tidak boleh diuraikan kecuali jika dapat dijamin itu benar-benar dibatasi. Lihat Mengapa Anda tidak perlu menguraikan output ls (1) untuk ide utamanya. Menggunakan find's -execpilihan adalah cara terbaik untuk menghindari masalah tersebut.
Jawaban:
Anda dapat mencoba
sumber
-exec
Saya seorang "menggunakan palu untuk semuanya" agak jadi saya menggunakan program shell bourne untuk hal-hal lain menggunakan program eksternal untuk ...
Beberapa orang suka menyelesaikan sesuatu dengan mengetik sesedikit mungkin tapi saya pengetik yang cukup cepat dan saya punya hal-hal seperti ini tertanam dalam otak saya sehingga tidak terlalu merepotkan untuk melakukan ini daripada mencari yang tepat argumen untuk menemukan dan mengeksekusi dan semua itu.
YMMV, meskipun ...
sumber
@Mereghost sangat dekat. Inilah yang saya bisa untuk memindahkan semua file (termasuk file tersembunyi), tetapi tidak direktori:
The
.
setelah menemukan mengasumsikan Anda direktori saat ini adalah sumber dari file yang ingin Anda bergerak. Jika tidak, perintah dapat direvisi, sebagai berikut:Jika Anda ingin memindahkan hanya file biasa dan bukan file tersembunyi:
Jika Anda ingin memindahkan hanya file tersembunyi dan bukan file biasa:
sumber
Jika Anda tidak memiliki folder dengan nama titik di dalamnya, Anda dapat memindahkan semuanya dengan mudah:
mv . ~ / folder tujuan
(Asumsi saya adalah semua file Anda adalah sesuatu. Sesuatu (dalam kasus saya semua biasanya))
TAPI terima kasih atas jawaban lain - sangat membantu. Terima kasih
sumber
Anda dapat menggunakan find
sumber
mv `find ./sourcedir/* -type f` ./destdir
sumber
find
's-exec
pilihan adalah cara terbaik untuk menghindari masalah tersebut.