Когда вы архивируете файл, добавьте его имя к файлу, который я назову archived_files.txt
. Затем используйте - exclude-from = archived_files.txt
в своей команде rsync
, чтобы пропустить эти файлы.
Узнайте, как опция globstar
в bash
может вам помочь:
shopt -s globstar ; for i in ** ; do echo "$i" ; done
Это должно дать вам отсортированный список всех элементов вашего дерева каталогов, но он будет включать записи (строк )как для файлов, так и для подкаталогов -.
Отфильтровать подкаталоги:
shopt -s globstar ; for i in ** ; do [ -f " $i" ] && echo "$i" ; done
Ввести счетчик и удалить суффиксы текущего файла:
cnt=1
shopt -s globstar
for i in ** ; do
[ -f "$i" ] && echo "${i%%.*}.$cnt"
cnt=$((cnt=cnt+1))
done
Замените оператор теста echo
на mv
по вашему выбору:
mv "$i" "${i%%.*}.$cnt"
При необходимости отключите параметр globstar
после завершения:
`shopt +s globstar`
Сzsh
:
autoload zmv # best in ~/.zshrc
cd "Folder 1"
n=0; zmv -n '**/Item.<->(#qn^/)' 'Item ${(l:2::0:)$((++n))}'
(снять-n
(для пробной работы -запустить )при хорошем состоянии ).
<->
:любая последовательность десятичных цифр(<x-y>
без границы)(#qn)
:для числовой сортировки (поэтому Subfolder 10
идет послеSubfolder 2
). ^/
:исключить файлы типа каталог . ${(l:2::0:)var}
:левая -закладка (и обрезать, если больше)$var
с 0
s до длины 2. Предупреждение :в то время как глобус **/
предназначен для соответствия любому уровню подкаталога, включая пустой уровень, поэтому файлы в текущем каталоге соответствуют, в zmv
это не так из-за двойного передайте это с шаблоном, один раз для подстановки, а второй раз как простое сопоставление с шаблоном для извлечения групп захвата (, а затем тот второй **/Item
, когда шаблон -совпал из-за отсутствия/
).
Обходной путь заключается в использовании:
zmv -n '(**/)Item.<->(#qn^/)' 'Item ${(l:2::0:)$((++n))}'
или:
zmv -wn '**/Item.<->(#qn^/)' 'Item ${(l:2::0:)$((++n))}'
, но затем zmv
обнаруживает рекурсивное совпадение и включает глубину -первого порядка (, чтобы можно было безопасно переименовывать каталоги ). Если вам не нужны файлы первого порядка и соответствия depth -в текущем каталоге,вы можете использовать полную форму**/
((*/)#
):
zmv -n '(*/)#Item.<->(#qn^/)' 'Item ${(l:2::0:)$((++n))}'
Включено:
.
├── Subfolder 1
│ ├── Item.01
│ ├── Item.02
│ └── Subsubfolder
│ └── Item.01
├── Subfolder 10
│ ├── Item.01
│ └── Item.02
└── Subfolder 2
├── Item.01
└── Item.02
Дает:
mv -- Subfolder\ 1/Item.01 Item\ 01
mv -- Subfolder\ 1/Item.02 Item\ 02
mv -- Subfolder\ 1/Subsubfolder/Item.01 Item\ 03
mv -- Subfolder\ 2/Item.01 Item\ 04
mv -- Subfolder\ 2/Item.02 Item\ 05
mv -- Subfolder\ 10/Item.01 Item\ 06
mv -- Subfolder\ 10/Item.02 Item\ 07