GNU/Linux >> Znalost Linux >  >> Linux

Dávkové přejmenování souborů na sekvenční číslování?

Snažím se dávkově přejmenovat spoustu souborů v mém shellu, a přestože je o tom na internetu spousta materiálu, nemohu najít řešení pro můj konkrétní případ.

Mám spoustu souborů, které mají (jak se zdá) „id časového razítka“:

abc_128390.png
abc_138493.png
abc_159084.png
...

který bych chtěl vyměnit za počítadlo:

abc_001.png
abc_002.png
abc_003.png
...

Můj (hodně) naivní přístup by byl něco jako:

mv abc_*.png abc_{001..123}.png

Také jsem nemohl přijít na způsob, jak zajistit, aby to fungovalo s for -smyčka.

FWIW, bohužel rename není v tomto konkrétním systému k dispozici.

Jakákoli rada by byla velmi oceněna!

Přijatá odpověď:

Nenapadá mě řešení, které zvládne zvýšení počítadla chytřeji, ale tohle by mělo fungovat:

i=0
for fi in abc_??????.png; do
    mv "$fi" abc_$i.png
    i=$((i+1))
done

Použití abc_*.png by mělo být bezpečné protože je rozbalen před prvním mv se někdy spustí, ale může být užitečné být velmi konkrétní v tom, že chcete pouze soubory s šestimístným časovým razítkem na konci.


Linux
  1. Jak přejmenovat soubory v Linuxu

  2. Metamorphose 2 – Dávkové přejmenování souborů a složek v systému Linux

  3. Rekurzivně optimalizujte soubory PNG

  1. Linux přejmenovává soubory na velká písmena

  2. Dávkový převod kódování v souborech

  3. Dávkový převod PNG na JPG v linuxu

  1. Jak přejmenovat spoustu souborů pomocí Regex?

  2. Přejmenovat soubory v adresáři?

  3. Nelze přejmenovat soubory v Samba Share?