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