Я только начинаю с bash-скриптов, и я пытался написать простой скрипт, где я могу перечислить все файлы с определенным расширением, используя скрипт bash. Я в основном код в Python или Matlab, поэтому я очень привык устанавливать адрес папки и использовать функцию cd для изменения пути к этой папке и получения списка файлов в этой папке. Я пытался сделать это с помощью bash, и я не то, что делаю неправильно. Например, я пытаюсь перечислить все вложенные папки в папку со следующим адресом "/home/user012/Desktop/folder2Start"
До сих пор я пытался
cd "/home/user012/Desktop/folder2Start"
, и он не сделал много когда я запускаю его из терминала.
Как бы я записал его и перечислил его папки?
Любая помощь будет принята с благодарностью ..
Это типичный прецедент для globing оболочки (расширение пути):
/home/user012/Desktop/folder2Start/*/
Здесь я использовал */, который будет соответствовать любому файлу (*) под /home/user012/Desktop/folder2Start/, что это каталог (trailing /).
Если вы хотите работать с ними позже, лучше поместите результат расширения в массив (работает аналогично Python list, оба равны 0 -indexed):
directories=( /home/user012/Desktop/folder2Start/*/ )
, тогда вы можете ссылаться на массив и его элементы, используя обычные операторы манипуляции массивами.
OTOH, если вы хотите использовать этот список, используйте echo / printf / ls - все, что вам подходит:
printf '%s\n' /home/user012/Desktop/folder2Start/*/
echo /home/user012/Desktop/folder2Start/*/
ls -ld /home/user012/Desktop/folder2Start/*/
для любого имени каталога со встроенной новой строкой, ищет хвост / как маркер окончания имени.
Вы должны использовать что-то вроде:
ls -l -d /home/user012/Desktop/folder2Start/*/
*/ ищет каталоги -d, которые не печатают содержимое этих каталогов. Это типичный прецедент для globing оболочки (расширение пути):
/home/user012/Desktop/folder2Start/*/
Здесь я использовал */, который будет соответствовать любому файлу (*) под /home/user012/Desktop/folder2Start/, что это каталог (trailing /).
Если вы хотите работать с ними позже, лучше поместите результат расширения в массив (работает аналогично Python list, оба равны 0 -indexed):
directories=( /home/user012/Desktop/folder2Start/*/ )
, тогда вы можете ссылаться на массив и его элементы, используя обычные операторы манипуляции массивами.
OTOH, если вы хотите использовать этот список, используйте echo / printf / ls - все, что вам подходит:
printf '%s\n' /home/user012/Desktop/folder2Start/*/
echo /home/user012/Desktop/folder2Start/*/
ls -ld /home/user012/Desktop/folder2Start/*/
для любого имени каталога со встроенной новой строкой, ищет хвост / как маркер окончания имени.
U может перечислить этот файл «folder2Start», выпустив:
ls -la /home/user012/Desktop/folder2Start
Возможно, я слишком поздно, но вопрос все еще активен, надеюсь, он может быть вам полезен.
Вы должны использовать что-то вроде:
ls -l -d /home/user012/Desktop/folder2Start/*/
*/ ищет каталоги -d, которые не печатают содержимое этих каталогов.