Как найти расширение файла с помощью UNIX? - PullRequest
4 голосов
/ 17 февраля 2011

Мне нужно найти расширение файла для обработки файла в UNIX.Два расширения файла, которые я буду обрабатывать, это «.dat» и «.csv».

Пожалуйста, дайте мне знать, как это можно сделать.

Ответы [ 5 ]

18 голосов
/ 17 февраля 2011
find . -name "*.dat" -o -name "*.csv"

Находит в текущем каталоге и рекурсивно выключает все файлы, заканчивающиеся этими двумя расширениями.

3 голосов
/ 24 февраля 2011

Так что мой удар по этому.

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

Выводит переменную $ {filename} pipe, которая выводит в awk.С помощью awk сбросьте разделитель полей на.затем возьмите поле 2 (часть для печати $ 2)

3 голосов
/ 17 февраля 2011

Это то, что вы хотите?

find . -name "*.dat"
find . -name "*.csv"
2 голосов
/ 17 февраля 2011
find /path -type f \( -name "*.dat" -o -name "*.csv" \) | while read -r file
do
   echo "Do something with $file"
done
2 голосов
/ 17 февраля 2011

если у вас есть имя файла в переменной

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
...