Portál AbcLinuxu, 26. dubna 2024 07:48


Dotaz: Hromadná úprava souborů a zachování názvů

3.1.2018 14:27 caine
Hromadná úprava souborů a zachování názvů
Přečteno: 282×
Odpovědět | Admin
Dobrý den, potřebuji hromadně ořezat ticho na začátku a na konci velkého množství .wav souborů. Např. pomocí programu SoX a příkazu:
sox in.wav out.wav silence 1 0.1 -73d reverse silence 1 0.1 73d reverse
Nyní potřebuji takhle upravit všechny zvukové soubory v adresáři najednou, aniž bych musel zadávat název každého zvlášť. Rád bych, aby původní názvy zůstaly zachovány, případně byl jen přidán nějaký znak na konci. Našel jsem zde na abc linuxu, jak se "něco podobného" řeší u zmenšování fotografií... dokonce pomocí skriptu (http://www.abclinuxu.cz/poradna/linux/show/185795), jenže nějak bych potřeboval postrčit. Děkuju.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.1.2018 14:51 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Niečo ako:
for file in *
do
  inputfile=$file
  outputfile=$file.$$
  sox $inputfile $outputfile ...
  mv $outputfile $inputfile
done
3.1.2018 17:07 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Do uvozovek bude ty proměnné za tebe dávat kdo?
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
3.1.2018 19:03 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
potřeboval postrčit
... nie nepriestrelné riešenie.
3.1.2018 20:13 caine
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Teď vidím, že jemné postrčení je pro mne málo :-)
3.1.2018 14:52 NN
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/bin/bash

for F in $(find /full/path/*.wav); do
  sox $F /tmp/out.wav silence 1 0.1 -73d reverse silence 1 0.1 73d reverse
  mv /tmp/out.wav $F
done
Netestovano..
3.1.2018 16:48 mhepp
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Tato konstrukce má jednu nevýhodu -- může přetéct délka/počet parametrů ve for-cyklu. Z tohoto pohldu je lepší používat:

find /full/path/ -name "*.wav" | while read F; do ... done

Pro zachování názvů se mi osvědčilo používat předponu nebo příponu k aktuálnímu názvu, protože ji lze jednoduše později odstranit:

sox $F out-$F silence 1 0.1 -73d reverse silence 1 0.1 73d reverse

Je lepší nemazat zdrojový soubor, dokud nemám jistotu, že vytvořený je v pořádku.
3.1.2018 18:02 Sten
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Když už tu někdo vytahuje find, tak ať ho taky použije pořádně:
find /full/path -name *.wav -exec sox {} silence 1 0.1 -73d reverse silence 1 0.1 73d reverse \; -exec mv /tmp/out.wav {} \;
3.1.2018 18:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů

Pominu-li drobnosti jako neoescapovaná hvězdička a zapomenuté jméno výstupního souboru pro sox, má tohle řešení oproti předchozím jednu (podle mne) zcela zásadní výhodu: selže-li z jakéhokoli důvodu příkaz sox, původní soubor se nepřepíše. (To by ale samozřejmě šlo zařídit i u těch ostatních variant.)

Pokud by z toho měl být skript, doporučil bych nezvykat si používat pro dočasný soubor pevně danou cestu pod /tmp, je to celkem spolehlivý generátor bezpečnostních chyb. (hint: mktemp)

3.1.2018 19:00 caine
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Uf... už jsem se do toho zamotal. Prosím můžete mi tedy napsat správný kompletní příkaz, který by nepřepsal původní soubor a nepoužíval by pro dočasný soubor pevně danou cestu pod /tmp.
3.1.2018 20:00 caine
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Otestováno... funguje. Děkuju. (Jen doplňuji, kdyby to někdo chtěl použít, že v původním příkazu pro sox má být správně na konci hodnota dB také záporná. Tedy: ...silence 1 0.1 -73d reverse)
3.1.2018 15:25 R
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Odpovědět | | Sbalit | Link | Blokovat | Admin
find . -name \*.wav -exec sox \{\} \{\}-out silence 1 0.1 -73d reverse silence 1 0.1 73d reverse \;
3.1.2018 20:22 caine
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Vyzkoušel jsem to takhle: find . -name \*.wav -exec sox \{\} \{\}.wav silence 1 0.1 -73d reverse silence 1 0.1 73d reverse \; a tím se nové soubory odlišily od původních zdvojenou příponou .wav. I vám moc děkuju za čas a ochotu.
3.1.2018 20:00 Nezmar23 | skóre: 2
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bezvadnej nástroj, kterej používám k hromadnýmu přejmenování je Krusader. Můžeš si zvolit do jména souboru cokoliv, datum, čas, pořadové číslo...... .
3.1.2018 20:03 Nezmar23 | skóre: 2
Rozbalit Rozbalit vše Re: Hromadná úprava souborů a zachování názvů
Příloha:
Náhled

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.