web-dev-qa-db-ja.com

コマンドを書いている最中に、ターミナルからディレクトリの内容を検索するにはどうすればよいですか?

できるだけ端末を使って、快適に過ごせるように心がけています。 GUIの代わりにコマンドラインを使用してほとんどの時間を失う私のコンピューター使用の側面は、私が興味のある曲を見つけようとするときです。

私の音楽フォルダは次のように構成されています音楽->バンド->アルバム->曲

AlbumaSongが入っているものを忘れがちですが、いつも覚えていますバンドがその曲を再生しました。

Musicディレクトリから曲を検索しません。曲を見つけるのに時間がかかりすぎるため(音楽がたくさんあります)、検索します。 Bandディレクトリに到達した後の曲の場合。今コマンドラインで私は持っています

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

でもアルバムSong「DaniCalifornia」が( totemはgnomeの音楽プレーヤーです。)これを回避する最も簡単な方法は、ファイルマネージャーGUIのRed Hot Chili Peppersフォルダー内に移動し、ctrl + fを押して「DaniCalifornia」と入力することです。

コマンドを書いている最中に、ターミナルからディレクトリの内容を検索する方法はありますか?または、コマンドラインからGUIで行うのと同じ目標を最も迅速に達成する方法についての推奨事項はありますか?

2
user784637

オートコンプリートが機能しないため、これは特に直感的ではありませんが、ファイルマスクを使用して目的を達成することができます。

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

もう1つのオプションは、findを使用して、検出したファイル名をトーテムに渡すようにすることです。

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

これは正確には「コマンドを書いている間に検索する」というわけではありませんが

2
Sergey

「タブ」を2回押すと、ファイルまたはディレクトリのリストが表示されます。次に、必要な部分を入力し、「タブ」を押して完了します。

0
Dave Kincaid

本当に面白い質問です。これは、CLIを使用するように強制するための非常に優れた方法です。しかし、男、それは音楽にはあまりにも苦痛に聞こえます。トーテムの限界(バンシーやリズムボックスとの比較)でどうやって生きていけるのかわかりません。 Nautilusとgeditの使用を禁止することで、ターミナルをより頻繁に使用するように強制できると思います。

しかし、私はあなたの忍耐と規律に感心します。おそらく、CLI /ターミナル指向の音楽プレーヤーを調べたいと思うかもしれません。ここにいくつかの良いレビューがあります: http://www.linux.com/archive/feature/124907

あなたが質問している特定の問題を解決できない場合は事前にお詫びしますが、質問の背景を考えると、それでもこれらのオプションは興味深いと思うかもしれません。幸運を祈ります。

0
Mark Russell

すでに提案されているmetacharの解決策は素晴らしいですが、それだけでは不十分な場合もあります。

一度に複数のターミナルを頻繁に使用し、screenを使用して単一のウィンドウを多重化しますが、gnome-terminalのタブでも同じように機能します(screenソリューションが機能することを指摘しておく必要がありますsshセッションまたは仮想端末でもあるため、より一般的です)。

したがって、別の端末に切り替えると、locateコマンドを使用できます。このコマンドの結果はfindよりもはるかに高速に取得されます。

0
enzotib

Bashでプログラム可能な完了を介して実行することもできます。小さなサンプルスクリプトをまとめました。

以下のスクリプトは、fapfind and play)コマンドを完了します。これは、たとえば、個別に定義する必要があります。

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
0
arrange