Попробуйте это:
for i in `cat file.txt`
do
File=`echo $i | awk -F '~' '{print "Src_"$5".txt"}'`
echo "$i" >> $File
done
file.txt
построчно в цикл for
. Src_
в качестве префикса и .txt
в качестве суффикса, чтобы объявить его как имя файла Возможно, это и лучше, но:
Использование bash
иfind
while IFS= read -r dir; do
mv -- "$dir" "${dir%/*}/X"
done< <(find. -maxdepth 2 -mindepth 2 -type d)
Сначала выполните пробный запуск с чем-то вроде:
while IFS= read -r dir; do
printf 'mv "%s" "%s"\n' "$dir" "${dir%/*}/X"
done< <(find. -maxdepth 2 -mindepth 2 -type d)
Короче:
find
.
текущий каталог как базовый (Обычно A
в вашем случае)type d
(каталог )с минимальной и максимальной глубиной 2 bash
прочитать $dir
из find
и переместить $dir
в ${dir%/*}
удалить последний /
и все, что там после /X
добавить новое имя каталога. Используйте, например, find./A...
, если вы проживаете на один уровень ниже А и т. д.
При необходимости добавьте -v
кmv
(не -POSIX ), чтобы показать предпринятые действия.