2011-02-17 79 views
4

我需要爲使用UNIX處理的文件找到文件擴展名。我將要處理的兩個文件擴展名是'.dat'和'.csv'。如何使用UNIX查找文件擴展名?

請讓我知道如何可以做到這一點。

+0

你找到答案? – 2011-02-24 13:33:25

回答

2

所以我刺在此。

filename=file.dat 
extension=$(echo ${filename}|awk -F\. '{print $2}') 
if [ ${extension} == "dat" ]; then 
    your code here 
fi 

迴應輸出到awk的變量$ {filename}管道。用awk將字段分隔符重置爲a。然後拿起場2(打印$ 2部分)

18
find . -name "*.dat" -o -name "*.csv" 

在當前目錄中找到並遞歸下來,以這兩個擴展名結尾的所有文件。

+0

可以說如果我有一個文件'test.dat',我怎麼知道當前文件是'.dat'文件擴展名。以上腳本將列出.dat擴展名中的所有文件。 – Arun 2011-02-17 14:56:56

+0

`發現。 -name test.dat`會發現只有命名的文件`test.dat` – jacobsimeon 2013-01-22 18:09:11

3

這是你想要的嗎?

find . -name "*.dat" 
find . -name "*.csv" 
+0

比方說,如果我有一個單獨的文件「TEST.DAT」,我怎麼找出當前文件是有「.DAT」文件擴展名。以上腳本將列出.dat擴展名中的所有文件。 – Arun 2011-02-17 14:57:29

+0

也許這可以幫助你:http://unix.stackexchange.com/questions/1571/bash-get-file-extension – alexl 2011-02-17 15:12:07

2

,如果你有一個變量名

filename = test.csv 

那麼就使用該工具來獲取 「CSV」 部分:

echo ${filename##*.} 

作品bash,試試它KSH

編號: 編輯:
2
find /path -type f \(-name "*.dat" -o -name "*.csv" \) | while read -r file 
do 
    echo "Do something with $file" 
done 
相關問題