Мой код принимает два аргумента от пользователя. Моя цель - найти папку, заданную пользователем (первый аргумент) и сделать столько копий, сколько нужно (второй аргумент). На данный момент мой код рекурсивно распечатывает все подкаталоги и файлы в подкаталогах ... Мой код также копирует файлы столько раз, сколько указано пользователем. Однако это моя проблема, моя функция копирования работает только с файлами, а не с папками ... Мне интересно, как изменить функцию копирования (или любую другую часть кода), чтобы она рекурсивно копировала указанную папку вместе со всеми своими оригинальное содержание
Я знаю, что моя функция cp в нижней части кода должна быть изменена на
-r ./sourceFolder ./destFolder, но я не знаю, как это сделать с учетом переданных аргументов. В конце концов, имя папки назначения будет просто исходной папкой с увеличивающимся номером в конце.
#!/bin/bash
read -p "Your folder name is $1 and the number of copies is $2. Press Y for yes N for no " -n 1 -r
if ! [[ $REPLY =~ ^[Yy]$ ]]
then
echo
echo "Rerun script and pass in the folder and how many copies yo would like (e.g folder 4)"
exit
fi
echo
echo "-------------COPY FILE----------------"
FOLDER=$1
for f IN $folder
do
if [ ! -f "$FOLDER" ]
then
echo "folder "$FOLDER" does not exist"
exit 1
fi
done
DIR="."
function list_files()
{
cd $1
echo; echo "$(pwd)":; #Display Directory name
for i in *
do
if test -d "$i" #if dictionary
then
list_files "$i" #recursively list files
cd ..
else
echo "$i"; #Display File name
fi
done
}
j=$2
for i in "$*"
do
DIR=$1
list_files "$DIR"
for ((i=1; i<J; i++))
do
cp "$1" "$1$i"; #copies the file i amount of times, and creates new files with names that increment by 1
done
shift 1
done