我需要找到要使用UNIX处理的文件的文件扩展名。我要处理的两个文件扩展名是'.dat'和'.csv'。
请告诉我如何做到这一点。
答案 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