Кажется, последние исправления от AMD наконец решили все мои проблемы. См. Https://cgit.freedesktop.org/~agd5f/linux/log/?h=amd-staging-drm-next. Теперь вам нужно скомпилировать ваше собственное ядро или подождать, пока эти исправления не попадут в ваш дистрибутив. [!d0 ]
Если у нас есть структура каталогов с двумя уровнями и на первом уровне нет файлов:
$ tree /tmp/rec
/tmp/rec
├── 101
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
├── 102
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
└── 103
├── 101-27022018-01:00:09-M00.wav
└── 101-27022018-01:00:09-M01.wav
$ rename -n 's/27022018-01/27022018-08/' /tmp/rec/*/*.wav
rename(/tmp/rec/101/101-27022018-01:00:09-M00.wav, /tmp/rec/101/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/101/101-27022018-01:00:09-M01.wav, /tmp/rec/101/101-27022018-08:00:09-M01.wav)
rename(/tmp/rec/102/101-27022018-01:00:09-M00.wav, /tmp/rec/102/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/102/101-27022018-01:00:09-M01.wav, /tmp/rec/102/101-27022018-08:00:09-M01.wav)
rename(/tmp/rec/103/101-27022018-01:00:09-M00.wav, /tmp/rec/103/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/103/101-27022018-01:00:09-M01.wav, /tmp/rec/103/101-27022018-08:00:09-M01.wav)
Когда структура каталогов более сложна, мы можем использовать опцию bash globstar:
$ tree /tmp/rec
/tmp/rec
├── 101
│ ├── 00
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 01
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
├── 102
│ ├── 00
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 01
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
└── 103
├── 00
│ └── 101-27022018-01:00:09-M00.wav
├── 01
│ └── 101-27022018-01:00:09-M00.wav
├── 101-27022018-01:00:09-M00.wav
└── 101-27022018-01:00:09-M01.wav
9 directories, 12 files
$ shopt -s globstar
$ rename -v 's/27022018-01/27022018-08/' /tmp/rec/**/*.wav
/tmp/rec/101/00/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/00/101-27022018-08:00:09-M00.wav
/tmp/rec/101/01/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/01/101-27022018-08:00:09-M00.wav
/tmp/rec/101/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/101-27022018-08:00:09-M00.wav
/tmp/rec/101/101-27022018-01:00:09-M01.wav renamed as /tmp/rec/101/101-27022018-08:00:09-M01.wav
...
Ссылки:
Рекурсивный скрипт bash для сбора информации о каждом файле в структуре каталоговЕсли у нас есть структура каталогов с двумя уровнями и на первом уровне нет файлов:
$ tree /tmp/rec
/tmp/rec
├── 101
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
├── 102
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
└── 103
├── 101-27022018-01:00:09-M00.wav
└── 101-27022018-01:00:09-M01.wav
$ rename -n 's/27022018-01/27022018-08/' /tmp/rec/*/*.wav
rename(/tmp/rec/101/101-27022018-01:00:09-M00.wav, /tmp/rec/101/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/101/101-27022018-01:00:09-M01.wav, /tmp/rec/101/101-27022018-08:00:09-M01.wav)
rename(/tmp/rec/102/101-27022018-01:00:09-M00.wav, /tmp/rec/102/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/102/101-27022018-01:00:09-M01.wav, /tmp/rec/102/101-27022018-08:00:09-M01.wav)
rename(/tmp/rec/103/101-27022018-01:00:09-M00.wav, /tmp/rec/103/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/103/101-27022018-01:00:09-M01.wav, /tmp/rec/103/101-27022018-08:00:09-M01.wav)
Когда структура каталогов более сложна, мы можем использовать опцию bash globstar:
$ tree /tmp/rec
/tmp/rec
├── 101
│ ├── 00
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 01
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
├── 102
│ ├── 00
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 01
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
└── 103
├── 00
│ └── 101-27022018-01:00:09-M00.wav
├── 01
│ └── 101-27022018-01:00:09-M00.wav
├── 101-27022018-01:00:09-M00.wav
└── 101-27022018-01:00:09-M01.wav
9 directories, 12 files
$ shopt -s globstar
$ rename -v 's/27022018-01/27022018-08/' /tmp/rec/**/*.wav
/tmp/rec/101/00/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/00/101-27022018-08:00:09-M00.wav
/tmp/rec/101/01/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/01/101-27022018-08:00:09-M00.wav
/tmp/rec/101/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/101-27022018-08:00:09-M00.wav
/tmp/rec/101/101-27022018-01:00:09-M01.wav renamed as /tmp/rec/101/101-27022018-08:00:09-M01.wav
...
Ссылки:
Рекурсивный скрипт bash для сбора информации о каждом файле в структуре каталоговЕсли у нас есть структура каталогов с двумя уровнями и на первом уровне нет файлов:
$ tree /tmp/rec
/tmp/rec
├── 101
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
├── 102
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
└── 103
├── 101-27022018-01:00:09-M00.wav
└── 101-27022018-01:00:09-M01.wav
$ rename -n 's/27022018-01/27022018-08/' /tmp/rec/*/*.wav
rename(/tmp/rec/101/101-27022018-01:00:09-M00.wav, /tmp/rec/101/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/101/101-27022018-01:00:09-M01.wav, /tmp/rec/101/101-27022018-08:00:09-M01.wav)
rename(/tmp/rec/102/101-27022018-01:00:09-M00.wav, /tmp/rec/102/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/102/101-27022018-01:00:09-M01.wav, /tmp/rec/102/101-27022018-08:00:09-M01.wav)
rename(/tmp/rec/103/101-27022018-01:00:09-M00.wav, /tmp/rec/103/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/103/101-27022018-01:00:09-M01.wav, /tmp/rec/103/101-27022018-08:00:09-M01.wav)
Когда структура каталогов более сложна, мы можем использовать опцию bash globstar:
$ tree /tmp/rec
/tmp/rec
├── 101
│ ├── 00
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 01
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
├── 102
│ ├── 00
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 01
│ │ └── 101-27022018-01:00:09-M00.wav
│ ├── 101-27022018-01:00:09-M00.wav
│ └── 101-27022018-01:00:09-M01.wav
└── 103
├── 00
│ └── 101-27022018-01:00:09-M00.wav
├── 01
│ └── 101-27022018-01:00:09-M00.wav
├── 101-27022018-01:00:09-M00.wav
└── 101-27022018-01:00:09-M01.wav
9 directories, 12 files
$ shopt -s globstar
$ rename -v 's/27022018-01/27022018-08/' /tmp/rec/**/*.wav
/tmp/rec/101/00/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/00/101-27022018-08:00:09-M00.wav
/tmp/rec/101/01/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/01/101-27022018-08:00:09-M00.wav
/tmp/rec/101/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/101-27022018-08:00:09-M00.wav
/tmp/rec/101/101-27022018-01:00:09-M01.wav renamed as /tmp/rec/101/101-27022018-08:00:09-M01.wav
...
Ссылки:
Рекурсивный скрипт bash для сбора информации о каждом файле в структуре каталогов