Как скомпилировать программу на c, не выходя из редактора? [дубликат]

Вы можете сделать это с помощью простого цикла shell:

for x in ./*_*_*_*; do mv -i "$x" "${x%_*}"; done

т.е. для каждого файла, имя которого содержит по крайней мере три подчеркивания, переименуйте файл, удалив часть, начинающуюся с последнего подчеркивания.

Если есть коллизия (например, существуют оба 20150512_101129_3016_v1A и 20150512_101129_3016_v1B), то первый файл в лексикографическом порядке переименовывается в нужный, а второй перемещается в подкаталог, т.е.. Например, 20150512_101129_3016_v1B перемещается в 20150512_101129_3016/20150512_101129_3016_v1B после того, как 20150512_101129_3016_v1A был переименован в 20150512_101129_3016. Чтобы избежать этого, добавьте дополнительную проверку:

for x in ./*_*_*_*; do
  if [ -e "${x%_*}" ]; then
    echo "Not renaming $x because ${x%_*} already exists"
    continue
  fi
  mv "$x" "${x%_*}"
done

Или, в Linux, передайте опцию -T в mv, чтобы заставить его выполнить эту проверку.

16
23.10.2012, 01:20
0 ответов

Теги

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