Jawaban:
cd ke direktori induk, lalu:
for f in */abcd*;
do mv $f ./
done
yang akan cocok mydir1/abcdfoo
, mydir2/abcdbar
dll. dan pindahkan ke pwd (yang merupakan direktori induk). Jika Anda hanya ingin melihat direktori yang disebut mydir * Anda dapat menentukan
for f in mydir*/abcd*;
do mv $f ./
done
Anda juga bisa melakukannya
find . -name "abcd*" -type f -exec mv {} ./ \;
yang menemukan semua file biasa (bukan dir) yang bernama abcd * dan memindahkannya ke pwd. Temukan terlihat secara rekursif dari direktori yang Anda tentukan setelah perintah find, itu "." pada kasus ini. Anda dapat menggunakan jalur absolut seperti:
find /path/to/the/parent/dir -name "abcd*" -type f -exec mv {} /path/to/the/destination/dir/ \;
PERINGATAN : Saya baru menyadari ini ketika saya mencobanya. Jika ada banyak file dengan nama yang sama di direktori yang berbeda misalnya mydir1 / abcdfoo, mydir2 / abcdfoo dan sebagainya, semua kecuali satu dari mereka akan ditimpa, sehingga Anda hanya memiliki satu file abcdfoo di direktori induk.
-bash: syntax error near unexpected token 'mv'
. Saran kedua bekerja ...