Yanıtlar:
Ayrıca, alt dizinlerdeki dosyaları da yeniden adlandırmanız gerekirse ve siz findde -execdiryüklemeyi destekliyorsanız,
find /search/path -depth -name '* *' \
-execdir bash -c 'mv -- "$1" "${1// /_}"' bash {} \;
Bana -depthseçenek önerdiği findve beni düşündürttüğü için @glenn jackman'a teşekkür ederim .
Bazı sistemlerde (GNU / Linux olanlar dahil), findadında boşluk ve ayrıca geçerli karakterler oluşturmayan bayt dizileri içeren dosyaları bulamayacağınıza dikkat edin (tipik olarak karakter setinde kodlanmış ASCII olmayan karakterlere sahip olan medya dosyalarında) yerel ayarlardan farklı). Yerel ayarın C(olduğu gibi LC_ALL=C find...) ayarlanması sorunu giderir.
-depthseçeneğini kullanın ve bundan kurtulabilirsiniz sort.
-name '* *'için -name '*_*'ve değişim "${1// /_}"için"${1//_/.}"
bashman sayfasında bulabilirsin.
Herhangi bir kabukta, adı boşluk içeren dosyaların üzerinde dolaşabilirsiniz. Boşlukların alt çizgi ile değiştirilmesi bash, ksh ve zsh ile ${VARIABLE//PATTERN/REPLACEMENT}yapı içerisinde kolaydır .
for x in *" "*; do
mv -- "$x" "${x// /_}"
done
Debian, Ubuntu ve türevlerinde Perl'i kullanabilirsiniz rename(diğer dağıtımlar farklı bir program gönderir renameve bu program burada yardımcı olmaz).
rename 's/ /_/g' *
Zorunlu bir zsh çözümü:
autoload zmv
zmv '(*)' '${1// /_}'
Zorunlu bir POSIX çözümü:
for x in *" "*; do
y=$(printf %sa "$x" | tr " " "_")
mv -- "$x" "${y%a}"
done
s/…/…/gtüm oluşumları değiştirmek anlamına gelir. Kılavuzda çok iyi açıklanmadı . Dizinleri yeniden adlandırmak istiyorsanız, yolları var, lütfen araştırın (daha önce gördüm sanırım) ve bulamazsanız yeni bir soru sorun.
_MG_blah.JPGiçin IMG_blah.JPG.
Bunun için kullanabilirsiniz rename(burada birini util-linuxdeğil birini varsayarsak perl):
cd /path/to/dir
rename ' ' _ *\ *
Bu, addaki tüm dosya ve dizin alanlarını bulur ve boşluğu alt çizgi ile değiştirir. Glob dosyası eşleştirmesi kullandığından, başlamak için doğru dizinde olmanız gerekir.
Özyinelemeli eşleşmeler yapmak istiyorsanız, ancak renamedizinlerinde yeniden adlandırılan öğeleri yakalamak için birkaç kez yürütmeniz gerekebilir :
cd /path/to/dir
shopt -s globstar
rename ' ' _ **/*\ *
!!; !!
renameDeğiştirerek belirtilen dosyaları yeniden adlandırır ilk oluşumunu itibaren tarafından kendi adlarına için .” Bu kendi adlarına tek boşluk ile dosyalar için yalnızca işleyecek Yani. ( renameBir döngüde çağırabilirsin , ama burası gerçekten doğru araç değil.)
mmvTakılıysa başka bir seçenek olacaktır .
mmv \*\ \* \#1_#2
_isimleri birden fazla boşlukla çalıştırmaz.
Debian / Ubuntu'da Caleb ve Gilles'un cevaplarını temel alarak, dosyaları tekrarlı bir şekilde yeniden adlandırmamda işe yarayan şey buydu:
cd /path/to/dir
shopt -s globstar
rename 's/ /_/g' **
Not: Hangi dosyaların yeniden adlandırılacağını ve nasıl önizleneceğini görmek için -nanahtarı kullanın rename:
rename -n 's/ /_/g' **
Başka bir not: ayar globstar, **tüm alt dizinlerdeki eşleşme dosyalarını yapar , bu nedenle yalnızca geçerli dizin isteniyorsa, globstar ayarlamayın veya *bunun yerine kullanmayın **.
Bir not daha: renameArama teriminin birden fazla tekrarı olan dosyalar için komutun bir defadan fazla çalıştırılması gerekir.
a b/c diçin a_b/c_dçalışma olmaz, yeniden adlandırmak ilk ihtiyacım olacağını a b/c dhiç a b/c_d, ardından a bkarşı a_b).
renamekomutu iki kere çalıştırmak anlamına mı geliyor ?
**bash'ın nokta dosyaları hariç tuttuğunu ve sembolik işaretleri geçtiğini unutmayın .
Düzenli ifadelerde flaş değilseniz (değilim!) Ve kde için tasarlanmış uygulamaları çalıştırabilirsiniz (ya kde - k masaüstünü kullanırsınız ya da kitaplıkları kurulursa), krename harika bir grafik aracıdır. Değişiklikleri yapmadan önce ve sonra görmenizi sağlar . Seçenek olarak bir dizi basit dönüşüme sahiptir ve ayrıca düzenli ifadeleri de destekler. Birkaç sıralı dönüştürmeyi tek bir adla bile birleştirebilirsiniz, böylece hepsini bir kerede yapan tek bir karmaşık dönüşüm tasarlamak zorunda kalmazsınız. Aynı zamanda, yeniden adlandırma uygulandıktan sonra aynı dosyaları yeniden adlandırmaya devam etme seçeneği de vardır.
Bunu çok sık kullanmıyorum, ancak yaptığım zaman işi gerçekten hızlı ve kolay bir şekilde yapıyor. İndirilen çeşitli medya dosyalarını yeniden adlandırırken gerçekten kullanışlıdır, böylelikle bunları sisteminizde düzenli olarak yönetebilirsiniz. Program adı kullanılırken krename kullanım kılavuzunun ayrıca indirilmesine yardımcı olur.
find -maxdepth 1OP'nin mevcut klasörde çalışması hakkında tam olarak ne istediğini yapmak için kullanmanız gerekir .