Egrep正在爲我生成一個基於它們的內容的文件列表,但我做錯了嘗試將該列表傳遞給cp的參數。 (我的shell是bash)。我想我會逃過文件名中的空格並將換行符轉換爲空格,但是cp似乎忽略了管道輸入中的轉義空格。如何發送cp的文件名列表(帶空格)
示例文件名:2011-05-15\ 14.43.41.txt
$ cp `egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | tr '\n' ' '` ~/crashreportstemp/
cp: cannot stat `2011-05-15': No such file or directory
當我執行反引號中的內容,我得到的輸出,我可以粘貼到CP。
我使用過xargs的嘗試:
$ egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | tr '\n' ' ' | xargs cp ~/crashreportstemp
但是,這會導致CP對待最後通過文件名的最後CP的說法,無視我明確的參數CP:
cp: target `2011-05-30 16.23.30.txt' is not a directory
我明顯地忽略了正確的做法,請幫忙!
由於賈森 -
謝謝!好點子。這幾乎是工作,但CP似乎無法辨別出最後一個參數是目的地。 「cp:'〜/ crashreportstemp'之後缺少目標文件操作數'」如果我將命令的輸出複製到xargs管道之前並將其粘貼到cp命令之前,則它工作正常。也許我需要使用輸入重定向? – rockriver 2011-05-31 18:26:00