Найти и создать жесткую ссылку с регулярным выражением в другом пути
Приведенный ниже скрипт находит файл, а затем создает жесткую ссылку в пути назначения.
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/;')"