web-dev-qa-db-ja.com

コマンドラインからクリップボードへのファイルのコピー

GUIファイルマネージャーでは、いくつかのファイルを選択し、Ctrl-C(ファイルに関する情報をクリップボードにコピーすると思われます)を押してから、別のフォルダーに移動してCtrl-Vを押すと、ファイルがそこにコピーされますディレクトリ。

実験として、ファイルマネージャでファイルをコピーした後、テキストエディタに切り替えることができます。Ctrl-Vを押すと、絶対ファイル名のリストが貼り付けられます。逆のプロセス(テキストエディターからファイルのリストをコピーしてファイルマネージャーに貼り付ける)は機能しません。これは、おそらく ターゲットアトム が異なるためです。

演習の目的は、コマンドラインからいくつかのファイルをコピーできるようにすることです。たとえば、

find ${PWD} -name "*.txt" | xclip <magic parameters>

次に、ファイルマネージャに切り替えて、[ファイル]-> [貼り付け]を使用してそれらをすべてディレクトリにコピーします。

したがって、問題は次のとおりです。xclip(または他のプログラム)のどのパラメーターを指定する必要がありますか?ファイルマネージャーは、選択をファイルのリストとして認識し、[貼り付け]メニュー項目を有効にしますか?

または、X選択の内容を検査して、現在どのデータが含まれているかを確認できる低レベルのツールはありますか?

18
Sergey

はい、基本的に、CLIPBOARDセレクションを次のいずれかとして提供する必要があります。

  • text/uri-list

    /path/to/file1
    /path/to/file2
    
  • application/x-kde-cutselectionまたはx-special/gnome-copied-filesとコンテンツcopy\nfile://$path1\nfile://$path2\0またはcut\nfile://$path1\nfile://$path2...\0

xclipを使用すると、次のようなことでこれを実現できます

find "$PWD" -name "*.pdf"| xclip -i -selection clipboard -t text/uri-list

期待できるこの loliclip コマンドも見つけましたが、値を取得することはできましたが、それらを保存してloliclipからpcmanfmが正常に終了しました。

Perl-tkの数行で実装することもできます。

12

なぜfindにやらせないのですか?

find ${PWD} -name "*.txt" -exec cp {} /full/path \; && gnome-open /full/path &

編集:私がman xclipから理解したことから:それはテキストのみを処理し、ファイルやディレクトリは処理しません。

1
h3rrmiller