2012-09-14 201 views
-1

我該如何循環這一行來將所有jpg文件打印到文本文件?在bash中循環一行命令

stat --printf="%s" *.jpg >> results.txt 

你會如何還能夠打印RESULTS.TXT根據文件的大小?代碼將如何顯示?文件的確切大小是40318

+2

請描述你想要更詳細地實現什麼,很難說出你想要循環的東西。此外,請發佈您到目前爲止所嘗試的內容。 – Mat

+0

我需要將文件名和文件大小打印到.txt文件。我需要弄清楚如何讓它看起來在目錄中。 –

+0

恐怕目前還不清楚你想要什麼。你想打印出所有.jpg文件的大小嗎?或者只有尺寸爲40318的那些?另外,您是否只對特定目錄或子目錄中的jpg文件感興趣? –

回答

2

您已經在打印所有* .jpg文件的結果。唯一的問題是,通過使用--printf="%s",您將更改stat的輸出格式以僅打印大小(每個項目之間沒有換行符或空格)。

嘗試,而不是:

stat --printf="%s\n" *.jpg >> results.txt 
# OR 
stat -c "%s" *.jpg >> results.txt 

要打印旁邊的大小的文件名,請嘗試:

stat --printf="%n %s\n" *.jpg >> results.txt 
# OR 
stat -c "%n %s" *.jpg >> results.txt 
+0

所以,如果我只想打印一個基於大小的文件名這將是正確的? $ filesize = 123456 stat --printf =「%s $ filesize \ n」* .jpg >> results.txt –

+0

編號「--printf」僅控制您如何打印輸出。你不能用它來過濾輸出。您將需要使用不同的命令,或者使用循環和'if'語句來過濾'stat'的輸出。 –

+0

你可以根據文件的大小聲明一個變量嗎?如果你知道它的大小可以寫在if語句之前? –

0

這是我的理解是要打印所有.JPG的大小和文件名文件轉換爲文本文件。爲此,您可以用組合找到LS,然後用AWK格式化輸出:

find . -name "*.jpg" | xargs ls -ahl $1 | awk '{print $5" "$9}' > results.txt 

請注意,該腳本將遞歸搜索從目錄中,你與指定找到