Как искать файлы по комбинированному шаблону каталога и имени файла

Если вы полностью доверяете всем в сети и можете напрямую подключить порт машины назначения, вы можете использовать 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.

0
15.02.2017, 09:19
3 ответа
$ find / -path "*/metadata/*" -name "*.xml"

или, в зависимости от ваших потребностей, просто

$ find / -path "*/metadata/*.xml"

Но это не то же самое.

  • Первый найдет все файлы с суффиксом .xml с путем, который содержит каталог метаданных . Файлы могут находиться на несколько уровней ниже этого каталога.

  • Второй найдет все файлы с суффиксом .xml , которые находятся в каталоге метаданных .

Примечание: я использую / , как вы сказали, «в файловой системе», что я интерпретировал как «где угодно».

В качестве альтернативы, используя locate (будут найдены только файлы, доступные для всех пользователей):

$ locate "/metadata/" | grep '\.xml$'

(Это будет работать как первая находка выше)

{{1 }}
3
28.01.2020, 02:25

Это вроде небрежно, но пока вы находитесь в родительском каталоге по вашему выбору, вы можете попробовать

grep -nr "*metadata/*xml" .
0
28.01.2020, 02:25

Что вам нужно понять, так это то, что -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 {} +
0
28.01.2020, 02:25

Теги

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