Shell-Script

如何從 xclip 選擇中獲取 x 個字元長的起始文本並附加到文件名?

  • April 6, 2019

所以我想弄清楚如何在我的 xclip 腳本中的時間戳之後添加標題。我希望它從每個選擇的開頭抓取大約 24 個字元的文本並將其保存為:

$ timestamp_ $ 24 個字元長的標題的起始文本.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

我使用這個腳本來保存各種有用的文本剪輯、程式碼片段、有用的文章,以及來自網路的所有內容。它節省了驅動器空間,並且是一種超級快速和簡單的方法。

這使我可以稍後在我想查看或再次查看該資訊時返回該資訊。

然而,僅僅為文件名使用一個簡單的時間戳並不總是讓嘗試重新定位特定文本文件變得如此容易。即使它是您在同一天保存的。

這就是我問這個問題的原因,試圖在文件名中添加一些附加資訊,希望能代表裡面的內容。同時保持專業和清潔尋找使用者以及系統。

我知道附加的文件名將幫助我找到我正在尋找的文本文件。


具有更好文件名標識的新腳本:

#!/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

當然,你可以這樣做。你幾乎可以用技術做任何事情。老實說,我真的沒有完全理解你的意思,我想。但是,據我所知,您想創建一個剪貼板管理器之類的東西,它將條目儲存在具有相關文件名的單獨文件中。無論如何,使用:

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

而且,不要忘記雙引號,否則它會說**“ambiguous redirect”**。我沒有指定預設情況下用作xclip的選擇,使用主選擇。

引用自:https://unix.stackexchange.com/questions/496787