Переименовать при перемещении с помощью заполнителя / подстановочного знака

Допустим, у меня есть следующие файлы

/home/user/test1.java
/home/user/test2.java
/home/user/test3.java
/home/user/test1.java.orig
/home/user/test2.java.orig
/home/user/test3.java.orig

Я хочу, чтобы файлы без расширения .orig были записаны вместе с файлами, например /home/user/test1.java.orig -> /home/user/test1.java и т. д.

Есть ли какая-нибудь команда, такая как:

mv /home/user/*.orig /home/user/*

, где я могу использовать placeholder из источника в определении назначения и где я могу указать, что я хочу перезаписать?

1
задан 18 February 2016 в 13:07

1 ответ

for file in $(find /home/user/* -name "*.orig") ; do mv $file ${file//.orig/} ; done

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

Если рекурсия должна быть отключена, on может добавить -maxdepth 1 в команду find. [ ! d1]

1
ответ дан 23 May 2018 в 13:26
  • 1
    find всегда удобен, он также имеет опцию -exec, которую вы могли бы использовать для выполнения команды mv, поэтому вам не нужно было бы запускать цикл for. Вы также можете добавить параметр -type f в поисковую часть поиска, чтобы работать только с файлами. – Arronical 18 February 2016 в 13:27
  • 2
    Большое спасибо! Я все еще новичок и учился шаг за шагом, чтобы лучше использовать Ubuntu :) – Markus Weninger 18 February 2016 в 13:28

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

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