2014-12-07 84 views
-1

我有一個cgi腳本,它調用服務器端bash腳本將一首歌曲(在cgi頁面上的文本框中輸入)添加到rhythmbox隊列中。 我能夠與在find命令中省略目錄名稱

name=`echo "$*" | sed 's/+/*/g'` 
rhythmbox-client --enqueue *$name* 

然而,Rhythmbox的客戶端--enqueue區分sensative,這意味着如果歌曲/樂隊的名字有一個大寫字母,和用戶沒有鍵入字母來做到這一點在cgi腳本中有一個大寫字母,它將不起作用。 我也有一個單獨的命令來搜索我的音樂目錄中給定的歌曲/樂隊的名字......

search=`find -iname *\$name\*` 
if [ "$search" = "" ]; 
    then echo "No song found." 
    else echo "The following songs have been added to the queue: $search" 
fi 

我想知道是否有任何的方式來刪除查找結果的目錄,然後我可以只需將其轉換爲var以與--enqueue命令一起使用,因爲find命令可能會被忽略,從而忽略資本化的持久性。

+0

你使用的是什麼版本的'find'? GNU'find'支持'-printf「%P」',它打印文件的名稱減去目錄參數'find'正在搜索中,除非你沒有使用GNU'find',因爲你不是指定要搜索的目錄。 – chepner 2014-12-08 00:18:13

+0

這工作,但沒有得到1行每個結果發現它只是將它們全部變成一條長長的行任何方式來解決這個問題? – 2014-12-08 00:45:06

+0

只需在格式字符串中加\ n,在每個文件名後面打印換行符。 – chepner 2014-12-08 01:22:27

回答

0

這個怎麼樣。

search=`find -iname *\$name\* -type f -printf "%P\n"` 
+0

不知道你明白我想問什麼。我不是試圖讓查找只顯示文件,我試圖使它不顯示目錄的文件是IN,當它給我的結果列表。 - chepner給我修復它找到-iname * \ $ name \ * -printf「%P」,但現在不是每行給出1個結果,而是將它們全部合併成一行,使其難以閱讀。 案例senesativity是與rhythmbox客戶端,它可以解決與發現 – 2014-12-08 00:48:17

+0

ic,加'\ n'獲得輸出新行。 – BMW 2014-12-08 00:56:20