Переименовывая ряд файлов к 001, 002, … на Linux

Просто пробегитесь через весь военно-морской объект и удалите класс, когда пользователь закроет вкладку

$('.your-close-icon').on('click', function() {
  $('.nav-item').removeClass('active');
});
20
задан DisgruntledGoat 19 May 2009 в 00:38
поделиться

5 ответов

If I understand right, you have e.g. image_001.jpg, image_003.jpg, image_005.jpg, and you want to rename to image_001.jpg, image_002.jpg, image_003.jpg.

EDIT: This is modified to put the temp file in the current directory. As Stephan202 noted, this can make a significant difference if temp is on a different filesystem. To avoid hitting the temp file in the loop, it now goes through image*

i=1; temp=$(mktemp -p .); for file in image*
do
mv "$file" $temp;
mv $temp $(printf "image_%0.3d.jpg" $i)
i=$((i + 1))
done                                      
13
ответ дан 30 November 2019 в 00:52
поделиться

Это делает обратное тому, что вы запрашиваете (беря файлы формы * .jpg.001 и конвертируя их в * .001.jpg), но их можно легко изменить для ваших целей:

for file in * 

do

if [[ "$file" =~ "(.*)\.([[:alpha:]]+)\.([[:digit:]]{3,})$" ]]

then

mv "${BASH_REMATCH[0]}" "${BASH_REMATCH[1]}.${BASH_REMATCH[3]}.${BASH_REMATCH[2]}"

fi

done
1
ответ дан 30 November 2019 в 00:52
поделиться

Простой цикл (тест с echo , выполнение с mv ):

I=1
for F in *; do
  echo "$F" `printf image_%03d.jpg $I`
  #mv "$F" `printf image_%03d.jpg $I` 2>/dev/null || true
  I=$((I + 1))
done

(я добавил 2> / dev / null || true для подавления предупреждений об идентичных исходных и целевых файлах. Если это вам не нравится, воспользуйтесь ответом Мэтью Флашена .)

9
ответ дан 30 November 2019 в 00:52
поделиться

Здесь уже есть несколько хороших ответов; но некоторые полагаются на сокрытие ошибок, что не является хорошей идеей (предполагается, что mv выдаст ошибку только из-за ожидаемого условия - а как насчет всех других причин mv может ошибиться?) .

Более того, это можно сделать немного короче и лучше процитировать:

for file in *; do
    printf -vsequenceImage 'image_%03d.jpg' "$((++i))"
    [[ -e $sequenceImage ]] || \
        mv "$file" "$sequenceImage"
done

Также обратите внимание, что вы не должны использовать свои переменные в сценариях bash.

1
ответ дан 30 November 2019 в 00:52
поделиться

I was going to suggest something like the above using a for loop, an iterator, cut -f1 -d "_", then mv i i.iterator. It looks like it's already covered other ways, though.

0
ответ дан 30 November 2019 в 00:52
поделиться