Eğer (put ≥4 bash, tek bir hedef dizinine bir dizin hiyerarşisi içindeki tüm dosyaları taşımak isterseniz shopt -s globstar
sizin içinde ~/.bashrc
veya zsh):
mkdir ~/new-directory
mv -i **/*.xxx ~/new-directory
Diğer kabuklarda:
mkdir ~/new-directory
find . -name '*.xxx' -exec mv -i {} ~/new-directory \;
Bu find
komut nasıl okunur :
.
: geçerli dizini geç
-name '*.xxx'
: ismi bu kalıpla eşleşen dosyalara etki eder
-exec … \;
: bu komutu her dosyaya {}
uygulayın, dosyanın yolunu değiştirin
Her dosya için find
ayrı bir mv
işlem başlatması gerekmediği için çok sayıda dosyanız varsa, bunun daha hızlı kullanılmasıyla daha karmaşık bir komut vardır :
find . -name '*.xxx' -exec sh -c 'mv -i "$@" "$0"' ~/new-directory {} +
+
Sonunda söyler find
Aynı anda birden çok dosya üzerinde komutunu çağırmak için. Yana find
yalnızca komut satırının sonuna ve en dosya adları koyabilirsiniz mv
son hedef dizini olması ihtiyaçları, biz (argümanlar yeniden düzenlemek için bir ara kabuk kullanmak "$0"
kabuğuna ilk argüman vardır ~/new-directory
ve "$@"
gelen müteakip argümanlar vardır find
'nin genişlemesi {}
).