Karakter değiştirerek birden fazla dosya adını değiştirin


29

that : screenshot 13:25.png
Muhtemelen ":" nedeniyle bu dosyaları açmak için Windows mücadelesi adlı bir çok dosyam var .

Nasıl değiştirebilirim?


2
Soruyu çözülmüş olarak işaretlemek için bir cevap kabul edebilir misiniz? Bu, diğer kullanıcılara büyük ölçüde yardımcı olacaktır.
MERose

Yanıtlar:


52

Bir terminalde, cddoğru dizine girip bunu çalıştırın.

rename 's/\:/-/g' *.png -vn

Bu , yeniden adlandırmayı önizleyecektir . O değiştirmelisiniz :ile -.

Bu doğru görünüyorsa, en nbaştan kaldırın ve ardından gerçek yeniden adlandırma işlemi yapılır.

Not : 17.04 Yukarıdaki Ubuntu sürümleri ile bulunmaz rename, ancak kullanım yüzden, hala varsayılan depolarda mevcut olduğunu sudo apt install renamebunu elde etmek


Cevabınız için teşekkür ederim. Denedim ve bu sorunu yaşıyorum: (
201

@ user236152 Üzgünüm, kaçan ters eğik çizgi ile biraz deliye döndüm (otomatik pilottaydı!). Bir çift kaldırıldı ve şimdi geçerli olmalı.
Oli

Belki de diğer platformlarda (seçilen tüm dosyalarda çalışan) sorunlara neden olabilecek tüm karakterleri değiştiren basit bir Nautilus Komut Dosyası "multiplatform" insanlar için faydalı olabilir.
Sadi

2
Neden kullanmalısın? Size ne yaptığını gösterir (bir hata yaparsanız geri dönmeyi kolaylaştırır). Neden sonunda? Sadece nkolayca (veya ) kaldırabilirsiniz .
Oli

1
@ nightcrawler Tamamen ayrı değiştirmeleri zincirleyebilmelisiniz:rename 's/\:/-/g; s/%28/ /g; s/%29//g' ...
Oli

10

İşte saf bir bash çözümü:

for i in *:*; do
    mv "$i" "${i//:/_}"
done

${var//pattern/replacement}Biçimi tüm oluşumları yerini alacak patternolan replacementdeğişkeninde $var. Bash'ın yayılma yetenekleri hakkında daha fazla bilgi için, buraya bakın .

Bunu birden fazla karakter için yapmak istiyorsanız, bunları bir karakter sınıfına yerleştirebilirsiniz. Yani, örneğin, tümünü değiştirmek için ;, :, =, +, %, ,alt çizgi ile, bunu yapabilirsiniz:

$ ls 
1foo:bar  2foo:bar:baz  3foo;bar  4foo=bar  5foo%bar  6foo,bar  7foo+bar
$ for i in *; do mv "$i" "${i//[:;=%,+]/_}"; done
$ ls
1foo_bar  2foo_bar_baz  3foo_bar  4foo_bar  5foo_bar  6foo_bar  7foo_bar

Temel olarak, fikir şu [ ]anlama geliyor any of the characters listed. Böylece, değiştirmek istediğiniz tüm karakterleri karakter sınıfına yerleştirerek, hepsine aynı anda baş edilir.


İstediğiniz belirli karakterler için, bazılarının kaçması gerektiğinden işler biraz daha karmaşıktır (çünkü bu /yana görmezden geliyorum * konu):

$ ls
1foo<bar  2foo>bar  3foo:bar  4foo\bar  5foo|bar  6foo*bar  7foo?bar  8foo"bar  9foo'bar
$ for i in *; do mv "$i" "${i//[<>:\\|*\'\"?]/_}"; done
$ ls
1foo_bar  2foo_bar  3foo_bar  4foo_bar  5foo_bar  6foo_bar  7foo_bar  8foo_bar  9foo_bar

Kaçtım unutmayın \, 've "bir ekleyerek \her önüne.


Bu, tek tek karakterlerin (örneğin, Windows tarafından kabul edilemeyenlerin tümü) başkalarıyla değiştirilmesi için geliştirilebilir mi?
Sadi

1
@ Sadi güncellenmiş cevabı gör.
terdon

Temelde dokuz tane var: "<>:" / \ | ? * "
Sadi

@ Sadi güncellenmiş cevabı gör.
terdon

Bu , seçilen dosyaların adlarını Windows ile uyumlu yapan bir Nautilus Komut Dosyası oluşturmanıza yardımcı olabilir .
Sadi

2

Bir GUI'yi tercih ediyorsanız, pyrenamer'ı yükleyin:

sudo apt-get install pyrenamer

O zaman çalıştır:

pyrenamer

Desenler ve yeniden adlandırma formatları için onlarca seçeneğe sahiptir.


1

GUI'yi tercih ediyorum ama bir Nautilus Eklentisi, yani Nautilus Actions Extra :

sudo add-apt-repository ppa:nae-team/ppa
sudo apt-get update
sudo apt-get install nautilus-actions-extra
nautilus -q

(Bkz. Www.webupd8.org/2011/12/nautilus-actions-extra-pack-of-useful.html )

Ardından, yeniden adlandırılacak dosyaları seçip içerik menüsünden Yeniden Adlandır'ı tıkladığınızda, dosyaları yeniden adlandırmak için birçok seçenek sunulur.


0

renameutilsPaket olarak adlandırılan kullanışlı bir program vardır qmvinteraktif toplu yeniden adlandırma sağlar. Bir dizinde veya dosyalar listesinde çalıştırıyorsunuz ve dosya adlarını içeren geçici bir metin dosyası oluşturuyor ve favori düzenleyicinizi başlatıyor. Editörden çıktığınızda, değiştirdiğiniz dosya adları buna göre yeniden adlandırılır. qmvtoplu iş yeniden adlandırma sorununu bir metin düzenleme sorununa dönüştürür.

Bu durumda, qmv -f do *:*iki nokta üst üste içeren tüm dosyaların adlarını ve ardından :%s/:/_/gVim'deki komutu (veya kullandığınız düzenleyicide karşılık gelen bir ara ve değiştir) kullanabilirsiniz.

Bu -f doseçenek, metin dosyasının biçimini yalnızca hedef dosya adına sahip olacak şekilde ayarlar; bu da ara ve değiştir işini kolaylaştırır. Varsayılan biçim, her satırda dosya adının iki kopyasına sahiptir ve yalnızca ikincisini düzenlersiniz. Bu, dosyadaki satırları sildiyseniz veya yeniden düzenlediyseniz, doğru olanı yapmasına izin verir, ancak her zaman kolay değildir. Başka formatlar da var.

İle qmv, bunun yerine boru gibi seçtiğiniz bir komutla, aracılığıyla oluşturulan dosyayı seçebilir sedetkileşimli yeteneği istemiyorsanız.


0

Ve burada (tümü?) Windows ile uyumlu olmayan karakterleri seçilen tüm dosya adlarında kısa çizgi ile değiştiren bir Nautilus Komut Dosyası ( terdon ;-) cevabına göre)

#!/bin/bash
filesall=""
while [ $# -gt 0 ]
    do
        files=`echo "$1" | sed 's/ /\?/g'`
        filesall="$files $filesall"
        shift
    done
for i in $filesall; do mv "$i" "${i//[<>:\\|*\'\"?]/-}"; done

0

Thunar (XFCE dosya yöneticisi), dosyaların toplu olarak yeniden adlandırılması için güzel bir yapı özelliğine sahiptir. Karakterleri kaldırma / değiştirme, arama ve değiştirme, dosyaları numaralandırma ve daha pek çok seçeneğe sahiptir.

Thunar'ı yükleyin:

sudo apt-get install thunar

Thunar'ı açın, dosyalarınıza göz atın, onları seçin ve 'yeniden adlandır'ı seçin (bağlam menüsünden veya F2)


0
@echo off
echo.
echo. How many Characters Do You Want To Remove
echo.
echo. From The End Of The FileName ?
echo.
echo.
set /p variable=" > "
setlocal enabledelayedexpansion
for /f "delims=" %%a in (' dir /b /a-d *.mp3') do (
set oldName=%%a
Set newName=!oldName:~0,-%variable%!.mp3
Ren "!oldName!" "!newName!"
)
exit

Bu iyi çalışıyor ve değişken bir bilgi istemi var ... Dosyaya şöyle bir ad verin: _ Truncate Last Characters.cmd
TekWiz2010

3
Bu doğru olsa da, bu bir Windows toplu komut dosyası dili kullanır. Ubuntu ile ilgili sorular için bir site olan AskUbuntu'dayız ve bu yüzden Ubuntu ile ilgili araçlardayız. Benim görüşüme göre bu cevap burada mutlaka uygun olmayabilir.
Sergiy Kolodyazhnyy

Sen çalıştırmak gerekiyordu Şarap aracılığıyla ancak, Bu sadece garip bir cevap ... Ubuntu bu çalıştırmak mümkün.Böylece tüm tis.
Oli
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.