输入文件名并定位文件

输入文件名并定位文件

我有一个脚本,当用户在目录中输入文件名时,会对该文件执行自动标记操作(mp3 标记)。

我的问题:输入我想要标记的每首歌曲的确切文件名真的很繁琐,我想知道当我输入文件名时是否可以实现制表符自动完成功能。

我的脚本的开头:

输入文件名并定位文件

echo  "Enter name of file to be tagged"
read -e FileName
FileFindTest=$(find ~/Downloads/"$FileName")
echo "$FileFindTest"

答案1

令人惊讶的是(对我来说),read简单的文件/文件夹可以通过该-e选项自动完成。

在您的示例中使用它(我已记录了我的更改)

echo  "Enter name of file to be tagged:"

cd ~/Downloads      ## cd to Downloads folder for autocomplete

read -e FileName

FileFindTest="$(find ~/Downloads/"$FileName")"  ## quoted 

echo "$FileFindTest"

在这种情况下,当要求输入时,它将自动完成下载文件夹中的文件/文件夹。


例如,假设您的下载文件夹中有以下文件:

~/Downloads
├───Pop/
│   └───PopSong.mp3
├───Song1.mp3
└───Song5.mp3

然后当你会得到以下结果(按下Tab<TAB>显示)

P<TAB>
Pop/

S<TAB>
Song1.mp3 Song5.mp3

PopSong.mp3<TAB>
# (nothing found here, as it's searching in Downloads/ only not Pop/)

Pop/P<TAB>
PopSong.mp3

答案2

我相信你会从阅读中受益如何创建具有自动完成功能的脚本?

如果此cd解决方法不适合您,您可以尝试这种方法用列表替换静态值。或者您可以直接进入可编程完成来自 Bash 手册。

相关内容