Копировать и переименовать файл

Это не имело никакого эффекта для меня, пока я не понял, что должен перезапустить демон ssh, предварительно угадав значение 'd'.

service sshd restart

Хотя это избавило меня от 10 -секундного зависания на этом этапе в моем scp, я все еще получаю обрыв канала/потеря соединения, которое побудило меня запустить scp в подробном режиме в первую очередь. Назад к старой чертежной доске..

0
10.11.2019, 14:39
1 ответ

Учитывая вашу схему и предполагая, что Folder 1, Folder 2, Folder 3 etc.действительно имеет какое-то значение (, в противном случае вы можете просто добавить текущую метку времени к каждому имени файла, которое у вас есть, чтобы избежать проблемы, которую вы получаете ), я бы пошел со следующим команда (убедитесь, что папка Final_Folderсуществует заранее):


find. -path./Final_Folder -prune -o -type f -exec sh -c 'fn=$(basename -- {}) ; suffix=$(dirname {} | tr / _  ) ; cp {}./Final_Folder/${fn%.*}$suffix.${fn##*.};   ' \;


схема именования файлов -будет следовать такой схеме:

[basename filename]._[basepath folder 1]_[basepath folder2]_[basepath folder[3..n].[extension]

или другими словами, окончательное _содержимое папки будет:

a._Folder_1.txt
a._Folder_2.txt
a._Folder_3.txt
b._Folder_1.txt
b._Folder_2.txt
b._Folder_3.txt
c._Folder_1.txt
c._Folder_2.txt
c._Folder_3.txt

Прелесть этой схемы в том, что если ваша иерархия, например, напоминает:

[YEAR]/[MONTH]/[DAY]/[filename a,b,c].txt

как это часто делается для сбора данных

если вы запустите приведенную выше команду из каталога верхнего уровня, ваши имена файлов с сегодняшнего дня, скопированные в Final_Folder, будут называться :"

a._2019_11_10.txt
b._2019_11_10.txt
c._2019_11_10.txt
.
.
.
[a,b,c]._2019_11_10.[WITH OTHER EXTENSIONS]

и сортировать, извлекать или анализировать файлы определенного типа или имени, или из определенного года, месяца или дня и т. д., было бы очень просто.

1
28.01.2020, 03:08

Теги

Похожие вопросы