2016-05-11 2 views
1

Я задавался этим на некоторое время, но я часто был в ситуации, когда у меня есть папки или файлы с именем с помощью следующей конвенции:Различные диапазоны номеров, как переменные в Bash

  1. 1R143D1B
  2. 2R143D1B
  3. 3R243D1B
  4. 4R343D1B
  5. 5R343D1B

Если первое число (1-5) будет представлять собой, например, сканирование. Второе число сразу после «R» (1, 1, 2, 3) будет представлять день. 43D1B - номер темы.

Я постоянно в ситуациях, когда мне нужно попасть в несколько папок предметов (например, единственное, что меняется в соглашениях об именах, это «43D1B» для других значений объекта, таких как «44U2A»), названных так и часто думали были бы способы, как «для» циклов, чтобы я мог кодировать что-то, что позволяет мне генерировать эти значения без жесткого кодирования команды cp (или любой другой).

Так что вместо hardcoding, например, cp /home/1R143D1B/1R143D1B.file /newfolder и делая это 50+ раз, я надеялся, что смогу сделать первое значение (значение сканирования) для переменной цикла или массива, а второе (значение дня) другой переменной, так что я мог бы сделать что-то вроде cp /home/${var1}R${var2}${subject}/${var1}R${var2}${subject}.file /newfolder

Но всякий раз, когда я думаю об этом логически я не уверен, что лучший способ пойти об этом, потому что соглашение выше установлено, что путь - Сканирует 1 & 2 всегда находятся на 1-й день , сканирование 3 всегда на 2-й день, а сканирование 4 & 5 всегда на 3-й день, поэтому число 1-5 не связано с цифрами 1-3, поэтому я не знаю, будет ли цикл работать, и я не уверен, что еще нужно. Может ли кто-нибудь поговорить с другим путем?

+0

Почему вы не можете использовать подстановочные знаки? Как в 'cp /home/?R?"$subject"/?R?"$subject".file/newfolder'. – choroba

ответ

0

Используйте лучший набор переменных для вашего цикла, например. 1R1 2R1 3R2 4R3 5R3.

Смежные вопросы