Найти и создать жесткую ссылку с регулярным выражением в другом пути

Приведенный ниже скрипт находит файл, а затем создает жесткую ссылку в пути назначения.

find /path/to/files -name "example" -exec ln {} /path/to/destination/ \;

Я хотел бы создать ссылку, используя следующие

'y/./ /; s/[()]//g; s/^([^0-9]+)([0-9]+).*\s([a-z0-9]+)$/\1(\2).\3/;'

Я пытаюсь сделать это в течение пары часов. Но безуспешно.

2 ответа

Может быть проще просто выбросить эти строки в файл perl и запустить его в своем find, Вы будете бороться с запуском этого в командной строке в -exec со многими слоями побега вам нужно.

Я понял!

new_movie_name=$(find "$TR_TORRENT_DIR/$TR_TORRENT_NAME" -type f -size +500M \! -iname "*sample*" \! -iname "*s[0-9][0-9]*" \! -iname "*e[0-9][0-9]*" \! -iname "*s[0-9][0-9]e[0-9][0-9]*" \! -iname "*s[0-9]e[0-9][0-9][0-9]*" \! -iname "*[0-9]x[0-9][0-9]*" \( -iname "*19[0-9][0-9]*" -o -iname "*20[0-9][0-9]*" \) -exec basename {} \;)

new_movie_directory=$(find "$TR_TORRENT_DIR/$TR_TORRENT_NAME" -type f -size +500M \! -iname "*sample*" \! -iname "*s[0-9][0-9]*" \! -iname "*e[0-9][0-9]*" \! -iname "*s[0-9][0-9]e[0-9][0-9]*" \! -iname "*s[0-9]e[0-9][0-9][0-9]*" \! -iname "*[0-9]x[0-9][0-9]*" \( -iname "*19[0-9][0-9]*" -o -iname "*20[0-9][0-9]*" \) -exec dirname {} \;)

plex_movie_directory="/hdd_bottom-left/plex/movie"

ln "$new_movie_directory/$new_movie_name" "$(echo "$plex_movie_directory/$new_movie_name" | sed -r 'y/./ /; s/[()]//g; s/^([^0-9]+)([0-9]+).*\s([a-z0-9]+)$/\1(\2).\3/;')"
Другие вопросы по тегам