Больше комментария, чем ответа (но я пока не могу публиковать комментарии :(), но есть ли у вас изучил alsa
и pulseaudio
со своей вики-страницы ( https://en.wikipedia.org/wiki/PulseAudio )
PulseAudio - звуковой сервер , фоновый процесс , принимающий ввод звука от одного или нескольких источников (процессов или устройств захвата) и перенаправляющий его на один или несколько приемников (звуковые карты, удаленные сетевые серверы PulseAudio или другие процессы )
Теоретически вы можете перенаправить alsa
на pulseaudio
и использовать pulseaudio
для перенаправления звука туда, куда вы хотите (на командный язык). Я бы не стал знаю, как это сделать, но это кажется возможным
РЕДАКТИРОВАТЬ:
Начните с pavucontrol
. Это хороший графический интерфейс для pulseaudio
, который может помочь вам перенаправить звук в другое место
Вы заметите, что ls -R
выводит имена файлов . То есть он не выводит пути . Поэтому, если файл, содержащий строку _2_3
в своем имени, находится в одном из ваших подкаталогов, в выводеls -R
(в той же строке нет информации о , где этот файл находится. как имя файла ). Это приведет к сбою вашей команды (имя файла не найдено в текущем каталоге ). Это также приведет к ошибке для любого файла, который содержит пробел, табуляцию или новую строку в своем имени, и потенциально также может привести к странным результатам, если какое-либо имя файла содержит символы подстановки имени файла.
Вместо этого, если вы хотите переместить файлы, имена файлов которых заканчиваются на _2_3
в каталог/directory1/directory2/directory3
(и что этот каталог не является подкаталогом текущего каталога ), тогда
find. -type f -name '*_2_3' -exec mv -t /directory1/directory2/directory3 {} +
сделал бы это.Это найдет пути ко всем обычным файлам (, а не к каталогам, именованным каналам, символическим ссылкам и т. д. ), чьи имена заканчиваются на _2_3
в любом месте текущего каталога или под ним, и будет выполнено mv -t /directory1/directory2/directory3
с таким количеством из этих путей как можно в пакетах.
В оболочке bash
вы могли бы также сделать
shopt -s globstar
mv -t /directory1/directory2/directory3 **/*_2_3
, если шаблон не расширяется до многих тысяч имен. Параметр оболочки globstar
в bash
включает шаблон подстановки **
. Он работает как *
, но будет соответствовать через/
в именах путей. Таким образом, он найдет все имена, соответствующие *_2_3
, в любом месте текущего каталога или ниже него. Обратите внимание, что эта команда не заботится о том, какой тип имени соответствует, и может также соответствовать именам каталогов, например (, но ваш подход ls -R
будет соответствовать ).
В оболочке zsh
можно было бы уточнить соответствие:
mv -t /directory1/directory2/directory3 **/*_2_3(.)
(.)
изменяет поведение предыдущего шаблона, чтобы он соответствовал только обычным файлам. Шаблон **
включен по умолчанию в zsh
.
Если вы хотите найти файлы, имена которых содержат _2_3
, просто измените бит *_2_3
шаблона имени файла в приведенных выше командах на *_2_3*
.
Важной частью сообщения является:No such file or directory
. ls -R
не включает путь к файлу. Итак, mv
имеет только имя файла, но не может его найти, потому что путь к нему отсутствует.
Вместо этого сделайте это:
$ find./ -name '*_2_3*' -exec mv -t directory1/directory2/directory3/ {} +