Вы можете легко полностью переназначить всю клавиатуру, включая все «специальные» клавиши. Если ваш Arch Linux использует Wayland, вам нужен xkb
(, который требует некоторого чтения ), если он использует X, поэкспериментируйте с xmodmap
и загрузите свой макет при входе в сеанс.
Погуглите немного, туториалов полно.
Можешь попробовать
find. -iname "*.out" -exec sh -c '
f=${1##*/};
f=${f%.out};
d=./location/$f/;
[ ! -d $f ] && mkdir -p $d;
mv $1 $d' sh {} \;
Если в путях к файлам нет пробелов
Прохождение
Найдите все свои .out
файлы и для каждого-exec.... \;
find. -iname "*.out" -exec sh -c '...script...` sh {} \;
Конструкция
sh -c `...script......` sh {}
Каждое имя файла принимается как {}
и передается обратно в сценарий как $1
, где мы
Удалить путь к последнему каталогу /
и сохранить какf
f=${1##*/};
Удалить суффикс .out
f=${f%.out};
Рассчитайте нужный каталог и сохраните его какd
d=./location/$f/;
Создать каталог, если он не существует, вместе с любыми родительскими элементами-p
[ ! -d $d ] && mkdir -p $d;
Сделай ход
mv $1 $d' sh {} \;
mv *SA_BA_W.out /location/SA_BA_W;
mv *SA_DEA_W.out /location/SA_DEA_W
и так далее.
Вы можете создать каталоги один раз, используя команду ниже:
Создать под-каталоги
ls *.out | sed -Ee 's/[0-9]*([A-Za-z]+)_([0-9]*[A-Za-z]+[0-9]*)_W.out$/\1_\2_W/g' | awk ' { system("mkdir -p /location/" $0) }'
ИЛИ
find. -regextype awk -regex './([0-9]*[A-Za-z])+_([0-9]*[A-Za-z]+[0-9]*)_W.out' | sed -Ee 's/[0-9]*([A-Za-z]+)_([0-9]*[A-Za-z]+[0-9]*)_W.out$/\1_\2_W/g' | awk '{ system("mkdir -p /location/" $0) }'
ИЛИ
find. -regextype awk -regex './([0-9]*[A-Za-z])+_([0-9]*[A-Za-z]+[0-9]*)_W.out' | sed -Ee 's/[0-9]*([A-Za-z]+)_([0-9]*[A-Za-z]+[0-9]*)_W.out$/\1_\2_W/g' | xargs -I {} mkdir -p /location/{}
ВЫ МОЖЕТЕ ВЫПОЛНИТЬ ОБЕИ операции, используя приведенный ниже цикл for
Создание подкаталогов и перемещение файлов в соответствующие каталоги:
for i in $(ls *.out)
do
DIR_NAME=$(echo $i | sed -Ee 's/[0-9]*([A-Za-z]+)_([0-9]*[A-Za-z]+[0-9]*)_W.out$/\1_\2_W/g')
test -d /location/$DIR_NAME || mkdir /location/$DIR_NAME
mv $i $DIR_NAME
done