GNU/Linux >> Znalost Linux >  >> Linux

Duplicitní soubor X-krát v Command Shell?

Snažím se xkrát duplikovat video soubor z příkazového řádku pomocí cyklu for, zkoušel jsem to takto, ale nefunguje to:

for i in {1..100}; do cp test.ogg echo "test$1.ogg"; done

Přijatá odpověď:

Váš shell kód má dva problémy:

  1. echo by tam neměl být.
  2. Proměnná $i je zapsáno chybně jako $1 v názvu cílového souboru.

Chcete-li vytvořit kopii souboru ve stejném adresáři jako samotný soubor, použijte

cp thefile thecopy

Pokud tam vložíte něco jiného, ​​např.

cp thefile theotherthing thecopy

pak se předpokládá, že chcete zkopírovat thefile a theotherthing do adresáře s názvem thecopy .

Ve vašem případě konkrétně hledá soubor s názvem test.ogg a jeden s názvem echo zkopírujte do adresáře test$1.ogg .

$1 se s největší pravděpodobností rozšíří na prázdný řetězec. To je důvod, proč, když odstraníte echo z příkazu získáte „test.ogg a test.ogg jsou stejné soubory“; vykonávaný příkaz je v podstatě

cp test.ogg test.ogg

Pravděpodobně jde o překlep.

Nakonec chcete něco takového:

for i in {1..100}; do cp test.ogg "test$i.ogg"; done

Nebo jako alternativa

i=0
while (( i++ < 100 )); do
  cp test.ogg "test$i.ogg"
done

Nebo pomocí tee :

tee test{1..100}.ogg <test.ogg >/dev/null

Poznámka:Toto by s největší pravděpodobností fungovalo pro 100 kopií, ale pro tisíce kopií může vygenerovat chybu „příliš dlouhý seznam argumentů“. V takovém případě se vraťte k používání smyčky.


Linux
  1. Příkaz wc pro Linux

  2. K čemu je Linux test – příkazový test?

  3. Příkaz Shell pro sledování změn v souboru

  1. Linuxový příkaz grep

  2. Linuxový příkaz pro zřetězení souboru k sobě nkrát

  3. Jak spustit příkaz vícekrát pomocí bash shell?

  1. Linux Tail Command

  2. Linux Touch Command

  3. Cat Command v Linuxu