Копируйте имена каталогов и имена файлов n времена

А-ч, информация взяла с собой texi2ps и texi2pdf программы.

Таким образом, при нахождении информационного источника (info.texi), можно генерировать красивый (или чрезмерно увеличенный в размере, в зависимости от точки зрения) использование PDF:

texi2pdf info.texi
2
03.12.2013, 00:14
2 ответа

Следующий сценарий делает это:

#!/bin/bash

INDIR=/path/to/where/your/file/is/stored
OUTDIR=/path/to/where/you/want/your/folders/to/be/created

# In the following line, 10 is the number of folders/files that will be created. -w means append a 0 before the numbers: 01 02 03 ... 10, instead of 1 2 3 ... 10. You can remove it if you want.

for i in `seq -w 1 10`; do 
    mkdir ${OUTDIR}/201311261418${i}
    cp ${INDIR}/201311261418.eob ${OUTDIR}/201311261418${i}.eob
done
2
27.01.2020, 22:14
  • 1
    Это работало бы над Linux, но не над AIX. Можно заменить удар ksh, но существует нет seq утилита на AIX. –  Gilles 'SO- stop being evil' 03.12.2013, 00:16
  • 2
    в этом случае, Вы могли заменить строку "поскольку я в seq -w 1 10; сделайте" для "поскольку я в 0 1 2 3 4 5 6 7 8 9 10; сделайте" или замените его "поскольку я в {1.. 10}; сделайте" –  Vincent 03.12.2013, 01:19
  • 3
    @Vincent подсказки: Когда я попробовал ниже части кода for i in {1..10}; do echo $i done Вывод как дан ниже {1..10} –  Ram 04.12.2013, 14:05

Ваш вопрос не очень ясен. Если я понимаю правильно, Вы хотите создать несколько копий файла, добавляя число в конце имени, но сохраняя расширение.

#!/bin/ksh
n=$1; shift
ret=0
for file; do
  # Decompose the file name to isolate the extension part
  dir=$(dirname -- "$file")
  file=$(basename -- "$file")
  base=${file%%.*}
  extension=${file#"$base"}
  # Make $n copies
  for ((i=1; i<=n; i++)); do
    cp -- "$dir/$base$extension" "$dir/$base$i$extension" || ret=1
  done
done
exit $ret

Использование (где make-copies сценарий выше):

make-copies 10 201311261418 201311261418.eob

Можно хотеть добавить разделитель перед числом, например.

    cp -- "$dir/$base$extension" "$dir/$base-$i$extension" || ret=1

Если Вы хотите заполнить число, обнуляет так, чтобы они имели ту же ширину, изменили начало сценария к

#!/bin/ksh
n=$1; shift
start=1${n//?/0}
…

и замените внутренний цикл

  for ((i=$((start+1)); i<=$((start+n)); i++)); do
    cp -- "$dir/$base$extension" "$dir/$base${i#1}$extension" || ret=1
  done
0
27.01.2020, 22:14
  • 1
    : При попытке код m получение sytax ошибки ksh: 0403-057 Syntax error: (' не ожидается'. –  Ram 04.12.2013, 14:09
  • 2
    @Ram - это на for ((…)) строка? AIX все еще не имеет ksh93? Попробовать i=1; while [[ $i -le $n ]]; do … i=$((i+1)); done –  Gilles 'SO- stop being evil' 04.12.2013, 14:12

Теги

Похожие вопросы