在不同的路径中查找并创建与正则表达式的硬链接

时间:2014-11-10 19:23:15

标签: regex sed find ln

以下脚本查找文件,然后在目标路径中创建硬链接。

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 个答案:

答案 0 :(得分:1)

将这些行放入perl文件并在find中运行它可能更简单。您将在-exec的命令行上运行此操作,并且需要进行多层转义。

答案 1 :(得分: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/;')"