如何使用UNIX查找文件扩展名?

时间:2011-02-17 14:07:10

标签: unix ksh

我需要找到要使用UNIX处理的文件的文件扩展名。我要处理的两个文件扩展名是'.dat'和'.csv'。

请告诉我如何做到这一点。

5 个答案:

答案 0 :(得分:18)

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

在当前目录中以递归方式查找以这两个扩展名结尾的所有文件。

答案 1 :(得分:3)

这是你想要的吗?

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

答案 2 :(得分:3)

所以我的捅了一下。

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

回显输出到awk的变量$ {filename}管道。用awk将字段分隔符重置为a。然后选择字段2(打印$ 2部分)

答案 3 :(得分:2)

如果您在变量中有文件名

filename = test.csv

然后使用它来获取“csv”部分:

echo ${filename##*.} 

适用于bash,请在ksh中尝试

编辑:

filename=test.csv
fileext=${filename##*.}
if [ fileext = "csv" ]; then
        echo "file is csv, do something"
    else
        if [ fileext = "dat" ]; then
            echo "file is dat, do something" 
        else
            echo "mhh what now?"
        fi
fi

答案 4 :(得分:2)

find /path -type f \( -name "*.dat" -o -name "*.csv" \) | while read -r file
do
   echo "Do something with $file"
done