Вы можете установить GRUB (вместо всей ОС) на USB-накопитель или компакт-диск и использовать его для загрузки. Иметь такой загрузочный носитель, как правило, приятно (по крайней мере, в системах без UEFI, если система настолько испортилась, что больше не загружается).
Следующий шелл-скрипт должен работать с деревом каталогов, которое вы указали в своем вопросе.
#!/bin/bash
for i in *.*
do
if test -e "$i"
then
tmp="${i%%.*}"
mkdir -p "$tmp"
mv -i "$i" "$tmp"
else
echo "No file or directory matching '$i'"
fi
done
'Изменить каталог', cd
, в каталог.
Создайте сценарий оболочки.
Дайте ему имя без точки , например shellscript
(, потому что вы не хотите, чтобы он двигался сам ),
Запустите сценарий оболочки с помощью
bash shellscript
Если вы намереваетесь создать новые файлы в верхней части дерева каталогов и снова запустить сценарий оболочки, вы можете «сделать его исполняемым»,
chmod +x shellscript
Затем вы можете запустить его «напрямую»,
./shellscript
cd Comb
for i in *; do mkdir -p ${i%%.*txt}; mv $i ${i%%.*txt}; done
Вы не слишком далеко продвинулись в своих попытках. Попробуйте эту небольшую адаптацию вашего собственного кода:
$ for file in *.cc.json*ml; do mkdir -p ${file%%.*}; mv -v ${file%%.*}.* ${file%%.*}; done
renamed '102.cc.json2.pre2.ml' -> '102/102.cc.json2.pre2.ml'
renamed '102.json2.pre1' -> '102/102.json2.pre1'
renamed '1.cc.json2.ml' -> '1/1.cc.json2.ml'
renamed '1.json2' -> '1/1.json2'
renamed '1.json2.pre1' -> '1/1.json2.pre1'
Вы можете упростить это, используя шаблоны glob
. Если вы находитесь в каталоге Comb
, вы можете сделать что-то вроде этого.
mkdir 1 102
mv 1\.* 1/
mv 102\.* 102/
Для этой простой задачи не нужны никакие циклы, но если у вас есть файлы такой же формы, как3.somefile.ml
103.mm.ml
66.anotherfile.json
вы можете добиться большего успеха, автоматизировав это
names=(`ls -1 | grep -Po "^\d+" | uniq `)
mkdir ${names}
for i in ${names[@]}
do
mv $i\.* $i
done
Здесь также используется шаблон glob
и создается папка для каждого файла с уникальным номером.