Подкачка виртуальной памяти ()включена на уровне ЦП. Это означает, что ЦП использует MMU для преобразования виртуального адреса (, как его видит приложение ), в физический адрес. Память разбита на страницы. Страница может быть либо загружена в память, либо загружена на диск. Если страница находится на диске, то обращение к этой странице приводит к ошибке страницы, которая обрабатывается ОС (ОС загружает страницу с диска ).
Таким образом, если у вас нет свопа, у вас все еще есть виртуальная память, ЦП по-прежнему использует MMU и разбивает память на страницы, но ОС не может перемещать эти страницы на диск.
Поместите все имена файлов в файл примера и выполните следующие шаги
#step1 it creates directory
awk -F "_" '{print $1}' samplefile | awk '{if (!seen [$1]++)print "mkdir" " " $0}'| sh
#step2: moves file to respective directory
for i in `awk -F "_" '{print $1}' samplefile | sort -u` ; do sed -n '/^'$i'_/p' samplefile | awk -v i="$i" '{print "mv" " " $1 " " i}'|sh ; done
Вы не должны делать mv
или cp
внутри awk
. Следующие работы:
for i in * ; do
[ -f "$i" ] || continue
dir_name="$(echo $i | awk -F'_' '{print $1}')"
mkdir -p -- "$dir_name"
cp -- "$i" "$dir_name"
done
Однако вместо awk
вы можете использовать оператор %
в bash, чтобы удалить все после первого символа подчеркивания, чтобы получить имя каталога.
for i in * ; do
[ -f "$i" ] || continue
dir_name="${i%%_*}"
mkdir -p -- "$dir_name"
cp -- "$i" "$dir_name"
done
(используйте mv
вместо cp
, если вы хотите переместить)