2011-05-07 83 views
1

如何打印出具有特定擴展名的某個目錄中每個文件的名稱?打印具有特定擴展名的每個文件的名稱

這是我到目前爲止有:

#!/bin/sh 

DIR="~/Desktop" 
SUFFIX="in" 

for file in $DIR/*.$SUFFIX 
do 
    if [ -f $file ]; then 
    echo $file 
    fi 
done 

遺憾的是它不工作。

它有什麼問題?

+0

測試列出的文件是否存在似乎毫無意義。 – 2011-05-07 17:51:08

回答

1

你可以使用與-type f

#!/bin/sh 
DIR="~/Desktop" 
SUFFIX="in" 
find "$DIR" -maxdepth 1 -type f -name "*.${SUFFIX}" -exec somecommand {} \; 
+0

foreach-strucure是一個準備/測試。 lateron該文件應該被傳遞給一個jar文件作爲參數 – flip 2011-05-07 17:47:31

-1
for file in `ls $DIR/*.$SUFFIX` 

注意找到ls和反引號

+0

它說:ls:不能訪問〜/ Desktop/*。in:沒有這樣的文件或目錄 – flip 2011-05-07 17:55:01

+0

它不擴展'〜' - 使用實際的完整路徑或者不要把'〜/ Desktop'放在引號中。 – 2011-05-07 17:56:49

+0

[不要解析ls的輸出](http://mywiki.wooledge.org/ParsingLs)你的建議正好倒退了。你的代碼與'$ DIR「/*."$ SUFFIX」'中的文件相當,只不過你的代碼會打破文件名中的各種字符,並且正確的方式總能正常工作。 – Gilles 2011-05-07 18:08:33

6

在您的DIR = 「〜/桌面」 的 「〜」 不能擴大,因爲這是在「 」。 刪除「」。 DIR =〜/桌面

+1

另外,do **在變量替換周圍使用雙引號**:用於「$ DIR」/*."" SUFFIX「'中的文件。 – Gilles 2011-05-07 18:09:21

0

對於您的信息:Unix系統中的「文件」通常是一個命令的名稱。

其目的是分析作爲參數給出的文件並推斷出格式。例如:

$ file entries.jar 
entries.jar: Zip archive data, at least v2.0 to extract 
相關問題