2014-11-10 3 views
0

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

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/;' 

Я пытался сделать это в течение нескольких часов в настоящее время. Но безуспешно.

ответ

1

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

+0

Я понял. Проверьте мой ответ и дайте мне знать, что вы думаете? Благодаря! –

+0

Ницца, молодец. – smathy

+0

Кроме того, я проголосовал за ваш ответ, потому что это была очень хорошая информация. Спасибо –

0

Я понял!

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/;')" 

 Смежные вопросы

  • Нет связанных вопросов^_^