Сценарий, который предполагает bash
или какую-то другую оболочку, выполняющую расширение фигурных скобок, и установленную GNU coreutils, выводит mkdir
команды для создания какой-то структуры каталогов, в которой каталоги имеют имена из контрольных сумм MD5, рассчитанных случайным образом. числа.
Полезно это или нет, я не знаю. В скрипте нет немедленных ошибок, за исключением нескольких проблем со стилем и раскрытия переменных без кавычек.
Ввиду отсутствия конкретного определения для filefinder
я предполагаю, что это что-то вроде этого (, но обновление см. ниже)
filefinder() { find "$1" -type f; }
Меня немного беспокоит, что если вы копируете несколько файлов с такими именами
a.c@@/Main
b.c@@/Main
c.h@@/Main
вы получите один файл на цели с именем Main
. Поэтому я предположил, что для a.c@@/Main
цель должна оставатьсяa.c
Теперь вместо использования filefinder
вы можете просто скопировать файлы за одну операцию. Я построил это решение так, чтобы его можно было параметризовать так же, какfilefinder
(выше ):
filecopier() {
find "$1" -type f -exec bash -c '
for file in "$@"
do
file="${file#*/}"
echo scp -p "${file}@@/Main" test@ip:"/path/${file##*/}"
done
' _ {} +
}
Удалите echo
из scp
, если вы уверены, что команды верны.
Похоже, что filefinder
не так просто, как я предполагал. Тем не менее, мы все еще можем использовать аналогичный подход
filefinder... |
while IFS= read -r file
do
echo scp -p "${file}@@/Main" test@ip:"/path/${file##*/}"
done
Это предполагает, что ваши имена файлов составляют одно -на -строку, без неудобных символов, таких как новая строка.