Я полагаю, что это - известная проблема с N 1 000 карт. Я имею один в моем ноутбуке, который был заполонен этой проблемой со дня один. То, что мы закончили тем, что делали, отключало сторону N этой карты, так как это - то, где проблема была изолирована один и другие.
Это сообщение в блоге экстенсивно охватило проблему, названную:
Можно отключить беспроводную связь N функциональность временно как так:
$ modprobe iwlagn 11n_disable=1
Сделать это постоянным:
# /etc/modprobe.d/wireless.conf
options iwlagn 11n_disable=1
затем разгрузите и перезагрузите драйвер:
# unload
$ rmmod iwlagn
# load
$ modprobe iwlagn
Можно попытаться загрузить и установить последние драйверы Центрино для карт N-1000 отсюда, Беспроводные сети + Intel® Wi-Fi Products + Intel® Centrino® Wireless.
#!/bin/bash
ls /tmp/*dat > filelist
while read fn
do
#do something with /tmp/$fn
done < filelist
в предположении, что
_
я бы использовал
sort -t_ -k2n
, которое дает четыре файла, приведенных в примере
Sample_0000137294-003_xyz.dat
Sample_0000237826-001_xyz.dat
Sample_0000237826-002_xyz.dat
Sample_0000437564-001_xyz.dat
Вы можете просто сделать простую сортировку. Предполагая, что имена ваших файлов не содержат пробелов или других странных символов, эта команда всегда даст вам самый старый файл:
find . -name '*dat' | sort -r | tail -n1
Если вам нужно разобраться со странными символами, используйте
find . -name '*dat' -print0 | sort -zr | tr '\0' '\n' | tail -n1
Таким образом, вы можете сделать что-то типа
file=$(find . -name '*dat' -print0 | sort -zr | tr '\0' '\n' | tail -n1)
while [ -e "$file" ]; do
if [ -e "$file" ]; then
echo "$file"; ## Process the file here
rm "$file";
fi;
file=$(find . -name '*dat' -print0 | sort -zr | tr '\0' '\n' | tail -n1)
done
Если вам действительно нужно отсортировать только по 1-му набору из 10 цифр, вы можете сделать что-то типа (предполагая, что то, что вы хотите отсортировать, находится между первыми двумя _
):
find . -name '*dat' -print0 | sort -zr -t "_" -k 2 | tr '\0' '\n' | tail -n1
Также обратите внимание, что в случае, если вы покажете, где все файлы начинаются с одних и тех же символов и меняются только цифры, вам вообще не нужно будет сортировать:
for file in *dat; do
echo "$file" ## process the file here
rm "$file"
done
Эта команда даст имя файла только одного файла, отсортированного по числовым полям, предполагая, что шаблон - это Sample_nnnnnn-ppp_xyz. dat
:
ls Sample_$(ls -l *.dat | awk -F ' |_' {'print $10'} |sort -n| head -1)*.dat
С помощью zsh
:
extract_numbers() REPLY=${(SM)REPLY##<->-<->}
for file (*<->-<->*.dat(no+extract_numbers)) {
do-what-you-will-with $file
}
Мы определяем функцию сортировки (extract_numbers
), которая возвращает Substring имени файла, который Matches <->-<->
(<->
соответствует любому положительному знаку после запятой).
Мы используем эту функцию для numeric ordering глобуса *<->.<->*.dat
.