如何从 xclip 选择中获取 x 个字符长的起始文本并附加到文件名?

如何从 xclip 选择中获取 x 个字符长的起始文本并附加到文件名?

所以我试图弄清楚如何在我的 xclip 脚本中的时间戳之后添加标题。我希望它从每个选择的开头抓取大约 24 个字符的文本,并将其保存为:

$timestamp_$24-character-long-title-of-start-text.txt

或者,是否可以让它抓取选择中最常用的单词,而不是开始文本?

这可能吗?如果不是,那是什么?

这是我当前的代码:

  #!/bin/sh
  #
  #           _  _                                               _           _    _                    _    
  # __ __ __ | |(_) _ __  ___  ___ __ _ __ __ ___  ___  ___ ___ | | ___  __ | |_ (_) ___  _ _      ___| |_  
  # \ \ // _|| || || '_ \|___|(_-</ _` |\ V // -_)|___|(_-</ -_)| |/ -_)/ _||  _|| |/ _ \| ' \  _ (_-<| ' \ 
  # /_\_\\__||_||_|| .__/     /__/\__,_| \_/ \___|     /__/\___||_|\___|\__| \__||_|\___/|_||_|(_)/__/|_||_|
  #                |_|                                                                                      
  #
  # Save Selected Text Script
  # XFCE4: Applications > Settings > Keyboard
  # Attach this script to a custom keyboard shortcut to be able to save selected text

  xclip -i -selection primary -o > /location/to/save/$(date +"%Y-%m- %d_%H-%M-%S")_$SOME_START_TEXT_OF_SELECTION_PREFERABLY_ONLY_24_CHARACTERS_OF_TEXT.txt

答案1

当然,你可以这样做。借助科技,你几乎可以做任何事情。说实话,我想我真的没有完全明白你的意思。但是,据我所知,您想要创建类似剪贴板管理器的东西,将条目存储在具有相关文件名的单独文件中。无论如何,使用:

xclip -o > "/path/to/file/$(date +'%Y-%m- %d_%H-%M-%S')_$(xclip -o | cut -b-24).txt"

并且,不要忘记双引号,否则它会说“不明确的重定向”。我没有指定要用作的选择剪辑默认情况下,使用主要选择。

答案2

我使用这个脚本来保存各种有用的文本剪辑、代码片段、有用的文章以及来自网络的所有内容。它节省了驱动器空间,并且是一种超级快速且简单的方法。

这使我可以在以后想再次查看或浏览该信息时返回该信息。

然而,仅使用简单的时间戳作为文件名并不总是能让尝试重新定位特定文本文件变得如此容易。即使它是您当天保存的。

这就是我问这个问题的原因,试图在文件名中添加一些附加信息,希望能够代表里面的内容。同时为用户和系统保持专业和干净。

我知道附加文件名将在很大程度上帮助我找到我正在寻找的文本文件。


具有更好的文件名识别功能的新脚本:

 #!/bin/sh                                                                              
  # Save Selected Text Script
  # XFCE4: Applications > Settings > Keyboard
  # Attach this script to a custom keyboard shortcut to be able to save selected text

  xclip -o > "/mnt/SB_5TB_HDD/LOGS/save/$(date +'%Y-%m-%d_%H-%M-%S')_$(xclip -o | cat -s | perl -pe 's/\r?\n/ /' | perl -pe 's/\ /_/g' | sed 's/__/_/g' | cut -c1-30).txt"
  bash -c 'notify-send "Save Selected Text - Success!"'


  # break down of commands used to achieve desired filename: 
  # replaces multiple line breaks with single one
  # cat -s
  #
  # replaces line break with a space
  # perl -pe 's/\r?\n/ /'
  #
  # replaces spaces with underscores
  # perl -pe 's/\ /_/g'
  #
  # replaces 2 underscores with 1
  # sed 's/__/_/g'
  #
  # only uses first 30 characters of text
  # cut -c1-30

使用示例:

当选择以下所有文本并执行上述脚本时...

最好有一个简单的键盘快捷键...

  Recipe for Poop Popsicles



  things youll need

  your own poop 
  your moms favorite popsicle trays

  lol ok im done 
  blah

  blah
  blah blah 

  and ... blah.


  1 more blah.

这将自动保存一个文件,其中包含所有上述选定的文本,以及带有如下标题的文件名,而不仅仅是无聊的旧时间戳:

2019-01-27_00-41-58_Recipe_for_Poop_Popsicles_tr.txt

相关内容