У меня есть много документов о моем диске с .odt расширением. Пример:
Однако я нахожу .odt недовольным при просматривании большого количества документов.
Так, мне удалось записать этот сценарий (removeODT.sh):
#!/bin/bash
for file in *.odt
do
mv "$file" "${file%.odt}"
done
Который удаляет .odt расширение из .odt файлов в каталоге, в котором я выполняю сценарий.
например, Откройте терминал в ~/Desktop/MyDocuments и типе
sh /home/user1/BashScripts/removeODT.sh
Это удаляет .odt расширение из всех файлов в MyDocuments.
Но после удаления расширения, я не могу использовать файлы в других операционных системах и также не могу искать содержание документа с loook
.
Таким образом для исправления этого я создал второй сценарий для добавления .odt расширения назад при необходимости (addODT.sh):
#!/bin/bash
for file in *
do
mv "$file" "${file%}.odt"
done
Теперь, то, что я хотел бы сделать, должно заставить те сценарии изменить каждый документ в указанном родительском каталоге и всех его подкаталогах только вместо единственного каталога, как они делают теперь.
например, "Удаляют .odt расширения из файлов в Документах и всех его подпапках"
Это позволило бы мне изменять все свои файлы с единственным сценарием, не имея необходимость выполнять сценарий для каждой папки отдельно. Но я довольно плохо знаком с этим так, я понятия не имею, как пойти об этом.
P.S. Идеальное решение состояло бы в том, чтобы скрыть .odt расширение в Наутилусе, но насколько я знаю, что это не возможно.
Можно использовать find
для обхода каталогов рекурсивно.
find -type f -exec mv {} {}.odt \;
Удаление расширения отчасти более проблематично:
find -name '*.odt' -exec bash -c 'f={}; mv "$f" "${f%.odt}"' \;
, Но можно также создать сценарий, чтобы удалить расширение и назвать его от находки для создания этого более простым:
find -name '*.odt' -exec remove_odt.sh {} \;
, Как можно предположить, {}
, будет заменен именем каждого файла с exec
, финал \;
говорит где команда для выполнения концов.
кроме того, не используйте sh
для выполнения bash
, сценарии, sh
и bash
являются различными зверями.