Это работает на произвольно глубокие подкаталоги:
$ find temps/ -name "thumb.png" | while IFS= read -r NAME; do cp -v "$NAME" "separate/${NAME//\//_}"; done
`temps/thumb.png' -> `separate/temps_thumb.png'
`temps/dir3/thumb.png' -> `separate/temps_dir3_thumb.png'
`temps/dir3/dir31/thumb.png' -> `separate/temps_dir3_dir31_thumb.png'
`temps/dir3/dir32/thumb.png' -> `separate/temps_dir3_dir32_thumb.png'
`temps/dir1/thumb.png' -> `separate/temps_dir1_thumb.png'
`temps/dir2/thumb.png' -> `separate/temps_dir2_thumb.png'
`temps/dir2/dir21/thumb.png' -> `separate/temps_dir2_dir21_thumb.png'
Интересная часть является расширением параметра ${NAME//\//_}
. Это берет содержание NAME
, и заменяет каждое происшествие /
с _
.
Примечание: результат зависит от рабочего каталога и параметра пути для находки. Я выполнил команду из родительского каталога временных файлов. Замена cp
с echo
экспериментировать.
Что относительно recordmydesktop? С gui фронтэндом GtkRecordMyDesktop.
Примечание: Прежде чем вниз голоса отмечают, что это было первым ответом.