Проблема с mv-сценарием

У меня проблема со сценарием mv .

  1. Я создаю папку Test :

     mkdir Test 
     
  2. В этой папке я создаю подпапки:

     mkdir -p Pics20 {18..23} / { 01..12} 
     
  3. В папке Test я создаю много файлов:

     коснитесь IMG20 {18..23} {01..12} {01..30 } {01..10} .jpg 
     
  4. Теперь мне нужно переместить все эти файлы IMG в соответствующие подпапки, поэтому я написал сценарий:

     для i в 20 {18..23} 
    do 
    for j in {01..12} 
    do 
    mv IMG20 $ i $ J * Pics20 $ i / $ j 
    готово 
    готово 
     

    Но я все время получаю сообщение об ошибке:

     не может статистика 'IMG202018j *': нет такого файла или каталога 
     

Что не так с моим скриптом ?

0
задан 29 May 2021 в 16:46

2 ответа

Если у вас хорошо организованная файловая структура, подойдет простое переименование . Если количество объектов может превышать ARG_MAX, предпочтительно чтение из stdin .

printf %s\\0 IMG*.jpg | \
   rename -0 -d 's|IMG(....)(..)(.*)|Pics$1/$2/$3|'
0
ответ дан 28 July 2021 в 11:34

Мне пришлось создать тестовый каталог с «вашим контентом». Таким образом, я сделал рабочий однострочник,

for i in 20{18..23}; do for j in {01..12}; do mv "IMG$i$j"* "Pics$i/$j"; done; done

Вы должны были заменить J на ​​j и добавить точки с запятой для разделения операторов. Также было важно, чтобы имена файлов и каталогов совпадали (посмотрите, как добавить '20')

. Также рекомендуется заключать выражения в двойные кавычки с переменными.

3
ответ дан 28 July 2021 в 11:34

Другие вопросы по тегам:

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