В 1980-х годах BIOS ПК должен был знать геометрию жесткого диска, чтобы правильно с ним работать. Пользователи должны были ввести правильное количество цилиндров, головок и секторов.
В какой-то момент (с введением интерфейса IDE— моя память на эту тему довольно нечеткая) диски стали способны сообщать компьютеру свою геометрию.
К началу-середине 1990-х прошивка диска самостоятельно управляла геометрией диска. BIOS по-прежнему требовалось значение для C/H/S, потому что оно использовало его для расчета размера диска. Но разбивка на значения C/H/S может быть произвольной. Таким образом, диски сообщали значения C/H/S, которые не имели ничего общего с фактической геометрией диска, но соответствовали допустимому диапазону и давали правильный общий размер.
Носитель данных, к которому не применима концепция цилиндров и головок, также будет составлять некоторое значение, которое приводит к правильному общему размеру.
Попробуйте это.
rsync -r --include='*.jpg' --exclude="*" /RootFolderI/Folder*/Subfolder1/Subsub1/. /RootFolderII/.
Не думаю, что я бы использовал rsync
для этой задачи. (Здесь нет дельта-алгоритма, так что мало что можно получить от его использования.) Вот версия с использованием cp
:
for rfipath in RootFolderI/*
do
folder="${rfipath/*\/}"
mkdir -p "RootFolderII/$folder"
cp -p "$rfipath"/*/Subsub1/* "RootFolderII/$folder"
done
Output
RootFolderII/FolderA/JPG1.jpg
RootFolderII/FolderA/JPG2.jpg
RootFolderII/FolderB/JPG4.jpg
RootFolderII/FolderB/JPG5.jpg
Если вы действительно хотите использовать rsync
, замените строка cp
с этим. Это даст вам время модификации для каталогов:
for folder in RootFolderI/*
do
rsync -a "$folder"/*/Subsub1/ "RootFolderII/${folder/*\/}"
done
Что я сделал:
rsync
with includes и исключает
Переместить файлы вверх (на 2 уровень выше)
find / folder / -type f -mindepth 3 -execdir mv -t ../../ - {} +
Удалить пустые папки
find / folder / * / -type d -empty -delete