Menggunakan Bash
Jadi katakanlah saya memiliki banyak file yang ditempatkan secara acak di direktori induk ~/src
, saya ingin mengambil semua file yang cocok dengan sufiks tertentu dan memindahkan (atau menyalin) ke ~/dist
direktori.
Mari kita asumsikan untuk tujuan ini bahwa semua nama file memiliki konvensi penamaan ini:
<filename_prefix>.<filename_suffix>
Saya menemukan bahwa ini adalah cara cepat untuk mendapatkan semua file dengan tertentu filename_suffix
dan meletakkannya di folder dist:
mkdir ~/dst
find source -name "*.xxx" -exec mv -i {} -t ~/dst \;
Sekarang selangkah lebih maju ... bagaimana saya bisa menggunakan output dari find, dalam hal ini filename
, dan menggunakan filename_prefix
untuk menghasilkan direktori dengan nama yang sama ~/dist
dan kemudian memindahkan (atau menyalin) semua file dengan awalan itu ke direktori yang sesuai?
mkdir ~/dst
find source -name "*.xrt,*.ini,*.moo" -exec mv -i {} -t ~/dst \;
Intinya, bagaimana cara mengubah perintah di atas (atau mungkin menggunakan perintah lain), untuk membuat struktur seperti ini
(KELUARAN)
~/dist/people/people.xrt
~/dist/games/games.xrt
~/dist/games/games.moo
~/dist/games/games.ini
~/dist/monkeys/monkeys.ini
~/dist/monkeys/monkeys.xrt
dari pohon direktori seperti ini?
(MEMASUKKAN)
~/src/xrt/people.xrt
~/src/xrt/games.xrt
~/src/conf/games.ini
~/src/pack/monkeys.xrt
~/src/e344/games.moo
~/src/e344/monkeys.moo
~/src/en-us/monkeys.ini
sumber
shopt -s globstar
, lihat edit saya. Jika hanya ada dua level, Anda dapat menggunakan*/*.*
dan snipet akan bekerja di shell apa pun.baris perintah find curang:
sebenarnya bekerja di sekitar untuk memanggil skrip bash di find LOL.
= P
sumber
happy rm -rf /
! Jenis kode ini layak mendapat -1.Yay" rm -rf / "Rox0r.avi
, sekali lagi ada masalah ...-exec bash -c 'command which uses "$1"' bash '{}' ';'
. Yah, toh itu tidak ada gunanya.