Почему я не могу переместить содержимое каталога (, включая скрытые файлы ), в файл, используя только эхо?

У меня такая же проблема. Я также использую безопасную загрузку, но я не думаю, что это связано с безопасной загрузкой. Безопасная загрузка не блокирует доступ к устройствам, она только проверяет загрузчики.

Вы уже нашли исправление?

-2
07.10.2021, 16:14
1 ответ

Двухсимвольная подстрока \nбез кавычек -заменяется оболочкой на n, что означает, что каждая из ваших echoкомандных строк будет печатать строку n.*в файл nom.txt, предшествующий или сопровождаемая строкойMusique/(или/Musique). Если в текущем каталоге есть файлы, соответствующие шаблону n.*, команда передаст эти файлы в echo.

Поскольку вы используете echo -e, предположительно в bash, любое имя, указанное в качестве аргумента, содержащего управляющую последовательность C, например \nили \t, будет изменено echoперед печатью.

Вы не говорите, но справедливо предположить, что вам нужна не командная строка с echo. Вместо этого, похоже, вы хотите перечислить имена путей, как скрытых, так и не -скрытых имен, как каталогов, так и других файлов из каталога Musique, включая само имя каталога.

Список всех путей в каталоге проще всего сделать с помощью find.

find Musique

Приведенная выше команда будет рекурсивно проходить заданный путь поиска и выводить каждый найденный путь в отдельной строке. Если вы хотите остановить рекурсию findв подкаталоги, добавьте -maxdepth 1в конец команды (, предполагая, что вы используете недавнюю реализацию find, например, в системе Linux ).

Делать это только для не -скрытого имени,

find Musique ! -name '.*'

или только для скрытых имен,

find Musique -name '.*'

Вы хотите, чтобы пути в одной строке разделялись пробелами, а затем передавали результат findв paste.

find Musique -maxdepth 1 | paste -s -d ' ' -

Обратите внимание, что сгенерированный список путей бесполезен сам по себе, кроме как для просмотра. Например, было бы сложно надежно различать имена файлов, учитывая, что имена файлов в системах Unix могут содержать пробелы, символы табуляции и символы новой строки.

Если вы хотите что-то сделать с каждым путем, вы обычно делаете это из команды find, используя ее предикат -exec.

-2
07.10.2021, 18:00

Теги

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