Если вы полностью доверяете всем в сети и можете напрямую подключить порт машины назначения, вы можете использовать netcat: nc
.
Допустим, IP-адрес машины назначения 192.168.1.123
На машине назначения:
nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir
Вы можете выбрать другой порт, а также привязываться к другому IP-адресу ваших интерфейсов, 0.0.0.0 просто цепляется все интерфейсы.
Об исходниках:
tar zxcf - filename | nc 192.168.1.123 7777
ИМХО, это самый быстрый способ переслать файл с одного компьютера на другой по цифровым сетям.
Аргументы и параметры командной строки могут немного различаться в разных версиях nc
и tar
, но они определенно будут работать с последними дистрибутивами Linux.
$ find / -path "*/metadata/*" -name "*.xml"
или, в зависимости от ваших потребностей, просто
$ find / -path "*/metadata/*.xml"
Но это не то же самое.
Первый найдет все файлы с суффиксом .xml
с путем, который содержит каталог метаданных
. Файлы могут находиться на несколько уровней ниже этого каталога.
Второй найдет все файлы с суффиксом .xml
, которые находятся в каталоге метаданных
.
Примечание: я использую /
, как вы сказали, «в файловой системе», что я интерпретировал как «где угодно».
В качестве альтернативы, используя locate
(будут найдены только файлы, доступные для всех пользователей):
$ locate "/metadata/" | grep '\.xml$'
(Это будет работать как первая находка
выше)
Это вроде небрежно, но пока вы находитесь в родительском каталоге по вашему выбору, вы можете попробовать
grep -nr "*metadata/*xml" .
Что вам нужно понять, так это то, что -name в 'find' на самом деле является 'basename' Следовательно, чтобы получить фактическое имя файла мы можем запустить вложенный поиск, в котором мы сначала находим каталог с именем «метаданные», а затем ищем любые файлы * .xml в указанном каталоге:
find . -type d -name metadata -exec sh -c '
shift $1;
while case $# in 0 ) break;; esac; do
find "${1}/." ! -name . -prune -type f -name \*.xml
shift
done
' 2 1 {} +