【发布时间】:2020-04-02 15:40:47
【问题描述】:
我已经用尽了所有可能的搜索。
我正在尝试使用 read 从 CLI 读取文件名/路径,以便我可以链接文件以进行批量排序。我已经尝试过各种各样的事情,从引号到没有,尝试使用 eval 来扩展,还有很多其他的事情。它们都不起作用。
这是我当前状态的脚本:
#!/bin/bash
read -p "from? (explicit, folder/) " -e from
read -p "to? (explicit, folder/) " -e to
read -p "base filename before ep name? " -e formatOldStart
read -p "base filename after ep name? " -e formatOldEnd
...
lnFrom=$from$formatOldStart$currentEpisodeNumber$formatOldEnd
echo $lnFrom
#ln "$lnFrom" "$lnTo"
这是一个示例用法:
$ from? (explicit, folder/) $HOME/archive/_DATA_ARCHIVE/.data/Example\ Complete\ Series\ +\ Movies\ \[Dual\ Audio\]/Example\ \[Dual\ Audio\ DVD\ 480p\]/
$ to? (explicit, folder/) $HOME/archive/_DATA_ARCHIVE/_video_storage/Anime/Shows/Example/Season\ 1/
$ base filename before ep name? \(Hi10\)_Example_-_
$ base filename after ep name? _(DVD_480p)_(a-S)_(*).mkv
然后是输出:
$HOME/archive/_DATA_ARCHIVE/.data/Example Complete Series + Movies [Dual Audio]/Example [Dual Audio DVD 480p]/(Hi10)_Example_-_015_(DVD_480p)_(a-S)_(*).mkv
这是预期的输出:
/home/user/archive/_DATA_ARCHIVE/.data/Example Complete Series + Movies [Dual Audio]/Example [Dual Audio DVD 480p]/(Hi10)_Example_-_015_(DVD_480p)_(a-S)_(6852D8ED).mkv
我只能在手动插入通配符(不是正则表达式)和this post 建议的文件名后获得预期的输出,但这显然意味着我每次想要使用它时都必须手动编辑这个脚本没有自动完成的新文件夹。我有很多东西要分类,所以这根本不可能。
【问题讨论】:
-
您能否将其简化为显示您看到的问题的最小可能代码位 (minimal reproducible example)?
-
@BenjaminW。调整。让我知道它是否可以接受。
-
输入行只是数据,不是shell扩展的代码。
$HOME是永远不会被解析为 shell 变量的文字文本。 -
我建议直接使用
from=$1; to=$2; ...而不是提示用户;您可以在脚本运行之前让 shell 处理$HOME/archive/_DATA_ARCHIVE...。 -
"这显然意味着每次我想将它用于新文件夹时,我都必须手动编辑此脚本" 什么?为什么?