2016-05-15 27 views

回答

0

有多種方法可以做到這一點。試圖在這裏給你一些簡單而乾淨的方法。它們都處理空間的文件名。

$ find。 -type f -print0 | xargs -0 cat

-print0添加一個空字符'\ 0'分隔符,您需要調用xargs -0來識別空分隔符。如果你不這樣做,文件名中的空格會產生問題。

例如沒有-print0文件名:ABC 123.txt1.inc將被解讀爲三個單獨的文件ABC123.txt1.inc

與-print0這成爲ABC 123.txt '\ 0'1.inc '\ 0'並且將被讀爲ABC 123.txt1.inc

對於xargs,它可以接受輸入作爲參數。 command1 | xargs command2表示command1的輸出傳遞給command2。

cat顯示文件的內容。

$ find。-type f -exec echo {} \; -exec cat {} \;

這只是使用find命令。它找到所有文件(類型f),調用echo來輸出文件名,然後調用cat來顯示其內容。

如果你不想要文件名,省略-exec echo {} \;

或者,您可以使用cat命令並傳遞find的輸出。

$ cat`find。 -type f -print`

如果要逐個滾動瀏覽多個文件的內容。您可以使用。

$ less`find。 -type f -print`

當使用less時,可以分別瀏覽:n和:p以獲得下一個和上一個文件。按q退出更少。

+0

哇。第一個工作完美。現在我需要弄清楚並研究你在那裏做了什麼。我真的很新。我非常感謝你的時間。 –

1

我會做這樣的事情:

$ cat `ls -lR | egrep "^-" | rev | cut -d ' ' -f 1 | rev` 
  • 使用ls找到文件
  • 的grep找到你的模式
  • 扭轉整個結果
  • 切出的第一個文件分開場獲取文件名(帶空格的文件有問題)
  • 將文件名恢復爲正常方向
  • 反引號將執行該操作並將文件名列表返回給cat。

或者我可能會這樣做的方式是使用vim來查看每個文件。

$ vim `ls -lR | egrep "^-" | rev | cut -d ' ' -f 1 | rev` 

感覺就像你試圖僅僅遞歸地找到文件。這是我在這些情況下所做的:

​​3210
+0

我正在嘗試的部分,我是新的在這個。我可以這樣做,它只返回名稱,但我無法顯示該文件。 我用過: 'ls -lR | grep^- | rev |剪下-d「」-f 1 | rev' 我會繼續嘗試。 –

+0

評論有轉發單個滴答聲。有沒有可能你沒有使用back ticks?後退標記用於獲取命令的結果,並將結果作爲bash中的變量提供,這正是我們在此要求的,以便cat或vim從grep操作接收文件列表。 – edt11x

+0

我使用back ticks,實際上在linux中,我不知道爲什麼是唯一可以使用的哈哈。當我把這條線,它說該文件不存在。我會繼續努力的。我非常讚賞你的幫助,我學到了很多東西。 –