当您正在编写命令时,如何从终端搜索目录中的内容?

当您正在编写命令时,如何从终端搜索目录中的内容?

我正尝试尽可能多地使用终端,以便熟悉它。在使用电脑时,我最常使用命令行而不是 GUI 的地方是当我尝试查找我感兴趣的歌曲时。

我的音乐文件夹结构如下音乐->乐队->专辑->歌曲

我经常忘记什么专辑A歌曲但我总是记得什么乐队播放了那首歌。

我没有搜索音乐目录,因为查找歌曲需要很长时间(我有很多音乐),所以我在找到歌曲后搜索歌曲乐队目录。现在在命令行中我有

# totem /home/user/Music/Red\ Hot\ Chili\ Peppers/

但我忘了什么专辑歌曲“Dani California” 在里面(totem 是 gnome 中的音乐播放器)。对我来说解决这个问题最快的方法是进入文件管理器 GUI 中的 Red Hot Chili Peppers 文件夹,按 ctrl+f 并输入“Dani California”。

有没有办法在我编写命令的过程中从终端搜索目录中的内容?或者您对如何最快地从命令行实现我在 GUI 中执行的相同目标有什么建议?

答案1

由于自动完成功能不起作用,这不是特别直观,但您可以使用文件掩码实现您想要的效果:

totem /home/user/Music/Red\ Hot\ Chili\ Peppers/*/Dani\ Ca*

另一个选项是使用 find,然后让它将找到的文件名传递给 totem:

find . -name "Dani Calif*" -exec totem '{}' +

虽然这并不完全是“在输入命令时进行搜索”

答案2

按两次“tab”键即可获得文件或目录列表。然后只需输入所需内容的一部分,再按“tab”键即可完成。

答案3

这个问题很有意思。这是强迫自己使用 CLI 的巧妙方法。但是,老兄,这对于音乐来说太痛苦了。我不知道如何忍受 Totem 的限制(相对于 Banshee 或 Rhythmbox)。我认为禁止自己使用 Nautilus 和 gedit 足以迫使你更频繁地使用终端。

但我钦佩你的耐心和纪律。也许你可能想研究一下 CLI/终端导向的音乐播放器。以下是一些不错的评论: http://www.linux.com/archive/feature/124907

如果这些选项都无法解决您提出的问题,我提前向您表示歉意,但考虑到您问题的背景,我认为您可能会发现这些选项仍然很有趣。祝您好运。

答案4

也可以通过以下方式完成Bash 可编程完成。我整理了一个小示例脚本。

下面的脚本完成了fap查找并播放) 命令,您应该单独定义该命令,例如

fap

#! /bin/sh
file="$2"
totem "$file" > /dev/null &
exit 0

然后将以下脚本放入/etc/bash_completion.d目录中

/etc/bash_completion.d/fap

_fap()
{
    local cur prev dir i saveIFS

    COMPREPLY=()
    _get_comp_words_by_ref cur prev

    saveIFS=$IFS
    IFS=$'\n'    
    dir="$cur"
    if [ -z "$cur" ]; then
        dir="/home/user/music"
    elif ! [ -d "$cur" ]; then
        dir="`dirname "$cur"`"
    fi

    local files=$(find `dequote "$dir"` -type f -iname "*${prev}*" -printf "%p\n")
    COMPREPLY=( $( compgen -W "${files}" -- $cur ) )

    for ((i=0; i < ${#COMPREPLY[@]}; i++)); do
        _quote_readline_by_ref ${COMPREPLY[i]} COMPREPLY[i]
    done

    IFS=$saveIFS

    return 0
} &&
complete -F _fap -o nospace fap

相应地更改行dir="/home/user/music"(启动您的音乐收藏的文件夹)。接下来,将脚本作为源

. /etc/bash_completion.d/fap

现在你可以像这样使用 TAB 补全

fap frozen [TAB]
fap frozen /home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/09\ -\ Madonna\ -\ Frozen.mp3

或者,如果有更多选择

$ fap girl [TAB]
$ fap girl /home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/[TAB][TAB]
/home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/04\ -\ Madonna\ -\ Candy\ Perfume\ Girl.mp3
/home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/13\ -\ Madonna\ -\ Mer\ Girl.mp3
$ fap girl /home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/0[TAB]
$ fap girl /home/user/music/MADONNA\ -\ RAY\ OF\ LIGHT/TRACKS/04\ -\ Madonna\ -\ Candy\ Perfume\ Girl.mp3

相关内容