Мост через Wi-Fi не работает в Debian Buster

Фон

Мне было любопытно, смогу ли я найти решение, которое достигает двух целей:

  • легче читать
  • легче отлаживать

Основываясь на прекрасном ответе @kusalananda на другие вопросы и ответы U&L под названием:Понимание опции -exec для find, я думаю, что придумал что-то, что решит вашу проблему.

Для начала вот моя примерная структура каталогов, которая имитирует вашу.

$ mkdir -p Artist{1..5}/Album{1..5}
$ touch Artist{1..5}/Album{1..5}/Track{1..5}.mp3

Это приводит к следующему:

$ find Artist* -type f | head
Artist1/Album1/Track1.mp3
Artist1/Album1/Track2.mp3
Artist1/Album1/Track3.mp3
Artist1/Album1/Track4.mp3
Artist1/Album1/Track5.mp3
Artist1/Album2/Track1.mp3
Artist1/Album2/Track2.mp3
Artist1/Album2/Track3.mp3
Artist1/Album2/Track4.mp3
Artist1/Album2/Track5.mp3

Теперь, чтобы скопировать файлы mp3 в./targetDir:

$ find. -type f -name '*.mp3' -exec sh -c \
    'cp {} targetDir/$(echo "{}" | sed "s#\./##g;s#/#-#g")' \;

Что приводит к этому:

$ ls targetDir/ | head
Artist1-Album1-Track1.mp3
Artist1-Album1-Track2.mp3
Artist1-Album1-Track3.mp3
Artist1-Album1-Track4.mp3
Artist1-Album1-Track5.mp3
Artist1-Album2-Track1.mp3
Artist1-Album2-Track2.mp3
Artist1-Album2-Track3.mp3
Artist1-Album2-Track4.mp3
Artist1-Album2-Track5.mp3

Мне нравится этот подход, потому что я могу сначала обернуть команду cp...в echo, чтобы я мог проверить вывод, прежде чем приступить к выполнению работы:

$ find. -type f -name '*.mp3' -exec sh -c \
    'echo "cp {} targetDir/$(echo "{}" | sed "s#\./##g;s#/#-#g")"' \;
cp./Artist1/Album1/Track1.mp3 targetDir/Artist1-Album1-Track1.mp3
cp./Artist1/Album1/Track2.mp3 targetDir/Artist1-Album1-Track2.mp3
cp./Artist1/Album1/Track3.mp3 targetDir/Artist1-Album1-Track3.mp3
cp./Artist1/Album1/Track4.mp3 targetDir/Artist1-Album1-Track4.mp3
cp./Artist1/Album1/Track5.mp3 targetDir/Artist1-Album1-Track5.mp3
cp./Artist1/Album2/Track1.mp3 targetDir/Artist1-Album2-Track1.mp3
cp./Artist1/Album2/Track2.mp3 targetDir/Artist1-Album2-Track2.mp3
cp./Artist1/Album2/Track3.mp3 targetDir/Artist1-Album2-Track3.mp3
cp./Artist1/Album2/Track4.mp3 targetDir/Artist1-Album2-Track4.mp3
...

Как это работает

Это решение берет вывод find, а затем запускает следующую команду оболочки:

cp {} targetDir/$(echo "{}" | sed "s#\./##g;s#/#-#g")'

Это будет cpфайл от Artist../Album../Track..до targetDir/..и переформулирует имя так, чтобы оно имело тире(-)везде, где есть косая черта(/).

ПРИМЕЧАНИЕ:Я добавил 2 операции в sed.Первый удаляет любой префикс ./, который может существовать, если вы используете find....вместо find Artist*...

Альтернативы?

Я думаю, что делать это с помощью findи cpвсе же не идеальное решение. Я тоже поддерживаю каталоги файлов MP3, и я думаю, что делать что-то подобное с rsyncи с помощью предоставленных вами списков rsyncможет быть более полезной реализацией, в долгосрочной перспективе, поскольку вы можете использовать ее для обновления, а не для повторного -копировать каждый раз, когда вы запускаете его.

$ man rsync
...
        --files-from=FILE       read list of source-file names from FILE

Просто мысль.

2
25.06.2021, 10:00
1 ответ

I need to bridge my ethernet and wifi adapters together.

Это часто задаваемые вопросы. :Wi-Fi по умолчанию использует так называемый режим 3 -адресов -, и следствием этого является то, что вы не можете соединить клиент Wifi и Ethernet .

(Ну, технически можно, но это не сработает. :Пакеты из сети Wi-Fi не дойдут до пунктов назначения в Ethernet, даже если они соединены мостом и находятся в одной подсети. Если вы пишете «вроде как работает», вы, вероятно, не проверяли этот случай ).

Однако вы можете соединить точку доступа Wi-Fi(AP )и Ethernet.

Итак, это XY вопрос:Ваш Y: "Мне нужно соединить Wi-Fi и локальную сеть на Debian Buster", но мы не знаем, какой у вас X (возможно :У меня есть Wi-Fi и локальная сеть дома, и я хотел бы, чтобы они были в одной подсети? ).

И в зависимости от того, какой у вас X, есть и другие способы добиться этого, например, вы можете соединить точку доступа Wi-Fi и локальную сеть в своем маршрутизаторе .

3
28.07.2021, 11:23

Теги

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