У меня есть 7K нечетных файлов в папке, которую я хочу организовать в другую папку на основе шаблона файла. Я дал некоторые фиктивные данные и сценарий, чтобы продемонстрировать проблему, с которой я столкнулся. Шаблоны на самом деле больше, чем те, которые показаны в примере.BASH: используйте переменную for-loop как другую переменную
folder/
0001_x.dat
0002_y.dat
0003_y.dat
0004_y.dat
0005_y.dat
0006_y.dat
0007_y.dat
0008_y.dat
0009_y.dat
...
Теперь сценарий ...
#!/bin/bash
p1="x|y|z"
p2="a|b|c"
p3="m|n|o"
FILES=$(find . -type f)
for pattern in p1 p2 p3; do
mkdir $pattern-folder
echo "$FILES" | egrep $$pattern | while read file ; do mv $file $pattern-folder ; done # << the "$$pattern" doesn't work. What should be the right syntax here ?
done
done
Я закончил тем, что делал это ниже способ, но я чувствую, что это не чистый. Все здоровые критические замечания и предложения приветствуются.
for pattern in p1 p2 p3; do
mkdir $pattern-folder
echo "$FILES" | egrep $p1 | while read file ; do mv $file $p1-folder
echo "$FILES" | egrep $p2 | while read file ; do mv $file $p2-folder
echo "$FILES" | egrep $p3 | while read file ; do mv $file $p3-folder
done
done
Хорошо, ваш скрипт делает именно то, что вы хотите? Что именно вы хотите от сценария? – sjsam