Скопируйте все файлы в другое место
У меня есть папка с именем "сотрудник", и в этой папке есть подпапки с именем каждого сотрудника.
employee
>> amar
>> akbar
>> anthony
Каждая из этих папок содержит 1 или 2 файла. Есть около 50 сотрудников. Я хочу скопировать все эти файлы в новую папку "/home/employee_files" без вложенных папок. Другими словами, все файлы должны быть доступны, когда я перечисляю "ls /home/employee_files"
3 ответа
Решение
find /home/attachments/ -type f -exec cp {} /home/attachments_all/ \;
Помните, что если два файла имеют одно и то же имя, вы получите только один из них.
Альтернативный подход заключается в копировании файлов на имя, которое является хешем их содержимого.
#!/bin/bash
cp "$1" /home/attachments_all/`sha1sum "$1" | cut -f 1 -d ' '`
Это даст вам уникальную копию каждого файла независимо от того, как он был назван ранее. Вы можете изменить скрипт, чтобы предоставить вам индексный файл.
find /home/attachments/ -name "*.*" -exec scp {} /home/attachments_all/ \;