GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menggunakan perintah 'mv' untuk memindahkan file kecuali yang ada di direktori tertentu?

Karena find memiliki opsi kecualikan, gunakan find + xargs + mv:

find /source/directory -name ignore-directory-name -prune -print0 | xargs -0 mv --target-directory=/target/directory

Perhatikan bahwa ini hampir disalin dari halaman manual find (menurut saya menggunakan mv --target-directory lebih baik daripada cpio).


Mari kita asumsikan struktur dirnya seperti,

|parent
    |--child1
    |--child2
    |--grandChild1
    |--grandChild2
    |--grandChild3
    |--grandChild4
    |--grandChild5
    |--grandChild6

Dan kita perlu memindahkan file agar terlihat seperti,

|parent
    |--child1
    |   |--grandChild1
    |   |--grandChild2
    |   |--grandChild3
    |   |--grandChild4
    |   |--grandChild5
    |   |--grandChild6
    |--child2

Dalam hal ini, Anda perlu mengecualikan dua direktori child1 dan child2 , dan pindahkan direktori lainnya ke child1 direktori.

gunakan,

mv !(child1|child2) child1

Ini akan memindahkan semua direktori lainnya ke child1 direktori.


Ini bukan yang Anda minta, tetapi mungkin berhasil:

mv the-folder-you-want-to-exclude somewhere-outside-of-the-main-tree
mv the-tree where-you-want-it
mv the-excluded-folder original-location

(Pada dasarnya, pindahkan folder yang dikecualikan dari pohon yang lebih besar untuk dipindahkan.)

Jadi, jika saya memiliki a/ dan saya ingin mengecualikan a/b/c/* :

mv a/b/c ../c
mv a final_destination
mkdir -p a/b
mv ../c a/b/c

Atau semacam itu. Jika tidak, Anda mungkin bisa mendapatkan find untuk membantu Anda.


Pertama-tama dapatkan nama file dan folder dan kecualikan mana saja yang Anda inginkan:

ls --ignore=file1 --ignore==folder1 --ignore==regular-expression1 ...

Kemudian berikan nama yang difilter ke mv sebagai parameter pertama dan parameter kedua akan menjadi tujuan:

mv $(ls --ignore=file1 --ignore==folder1 --ignore==regular-expression1 ...) destination/

Linux
  1. Cara Menggunakan Perintah Grep untuk Menemukan Teks di File

  2. 5 cara menggunakan perintah pindah di Linux

  3. Bagaimana Cara Menggunakan Inotifywait Untuk Menonton Direktori Untuk Pembuatan File Ekstensi Tertentu?

  1. Cara Mengekstrak File Tar ke Direktori Tertentu atau Berbeda di Linux

  2. Cara Menemukan Jumlah File dalam Direktori dan Subdirektori

  3. Bagaimana cara menggunakan perintah 'cp' untuk mengecualikan direktori tertentu?

  1. Bagaimana Cara Memindahkan File Tertentu Berdasarkan Ekstensinya?

  2. Cara Menggunakan Perintah find Linux untuk Menemukan File

  3. Cara Menggunakan Perintah rpm2cpio di Linux