mv
Bir şeyi yapmak ve iyi yapmak için tasarlanmış temel bir komut satırıdır (Unix felsefesi): dosyaları veya dizinleri taşıyın .
Hedef dizgiyi anında değiştirmek için hack STDOUT
& can yapabilirsiniz STDIN
, ancak bu sadece akıllı bir hack değildir
yeniden adlandır (Perl's one)
Bunu yapabilen veya yapamayan aynı ada sahip başka araçlar da vardır, bu yüzden dikkatli olun.
İnsanlar hakkında konuştuğunda rename
, bunu düşünüyoruz ELF
, daha az güçlü (sihir?) Değil .
Temel değil, Perl. Bazı Perl işlevlerini içeri aktarabilirsiniz ve son derece güçlüdür.
Bu örneği düşünün:
Gibi bir grup dosyayı yeniden adlandırmak istiyorsunuz
foobar_1.txt
foobar_2.txt
foobar_3.txt
Bu şekilde rakamlara sıfırlar ekleyebilirsiniz sprintf()
(regex, heh, Perl: D kullanarak):
rename 's/(\d+)/sprintf("%04d", $1)/e' foobar_*.txt
Şimdi:
foobar_0001.txt
foobar_0002.txt
foobar_0003.txt
Gerçekten basit bir komut değil, değil mi?
rename gerçekten dizin (ler) i taşımak için tasarlanmamıştır , ancak bunu yapabilir:
$ mkdir -p /tmp/foo/bar/base
$ touch /tmp/foo/bar/base/file
$ rename 's!/tmp/foo/bar/base/file!/tmp/file!' /tmp/foo/bar/base/file
Taşınan dosya
/tmp/file
Websites *.stackexchange.*
web sitelerinde gördüğümüz bazı kodlar
for FILE in `ls *.txt`
do
mv ${FILE} `echo ${FILE} | sed 's/anything_ugly/anything_still_ugly/'`
done
Bu doğru yolun neden doğru anda kullanıldığını açıklamak için gitmenin yolu değil, düz bir hata.
type -a rename
verename --version
?