Переименование файлов с использованием части пути

Подобный вопрос был задан здесь .

Строго говоря, нет, вам нужен какой-то MTA/программа, работающая для пересылки электронной почты.

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

Archlinux wiki содержит некоторые дополнительные сведения о его настройке.

0
15.11.2020, 03:13
2 ответа

Использование расширения параметра для удаления подстроки для создания целевой аргумент для команды mvдля каждого имени файла, который findвозвращает:

find. -type f -name '*.gz' -exec sh -c 'mv -- "$1" "${1%/*}-${1##*/}"' sh {} \;

Или то же самое с использованием dirnameиbasename:

find. -type f -name '*.gz' -exec sh -c '
    mv -- "$1" "$(dirname "$1")-$(basename "$1")"
' sh {} \;

Примечание. :Всегда сначала заменяйте mvна echo, чтобы проверить любую подобную команду.

0
18.03.2021, 22:49

По-видимому, ответ thanasisp основан на вашем сообщении и приведенном вами примере вывода, но не меняет /на -. Чтобы получить полную обработку, которую вы, кажется, ожидаете в своем присоединенном комментарии (под вашим сообщением ), вот что можно сделать, чтобы сохранить базовые имена ваших файлов с 6-го символа на...

При условии, что обнаружение файлов, представляющих интерес, хорошо с:

$ find friday13 -type f -name "*.gz"

(вам нужно подтвердить, что эта базовая findкоманда выше работает хорошо для вас ), тогда полная команда становится:

$ find friday13 -type f -name '*.gz' -exec bash -c '
      var=$(sed "s/\//-/g;s/^\.-//" < <(echo $1));
      echo mv -- "$1" "${var%-*}-$(cut -c6- < <(echo ${var##*-}))"
      ' execbash {} \;

и просто сотрите echoво фрагменте выше, как только вы убедитесь, что распечатанные mvcmds соответствуют вашим требованиям.

0
18.03.2021, 22:49

Теги

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