Как записать все имена каталогов в текстовый файл

Игра установлена ​​в каталоге, принадлежащем пользователю, который устанавливает его и запускается с привилегиями этого пользователя.

Чтобы этот метод стал для вас проблемой, вам нужно задать пароль администратора и предоставить его. Поэтому

никогда не запускает эту программу с помощью sudo или root. никогда не устанавливайте эту программу с помощью sudo или root. когда будет предложено ввести пароль администратора по этому поводу в google +;)

, и все будет в порядке.

0
задан 11 January 2018 в 14:20

9 ответов

Улучшая текущий код, эта команда должна быть полезна:

for d in ./*;do [[ -d "$d" ]] && echo "$d" >> dir.txt; done

Чтобы удалить ./ с выхода:

for d in ./*;do [[ -d "$d" ]] && echo "${d##./}" >> dir.txt; done
2
ответ дан 22 May 2018 в 15:36
  • 1
    sed не работал для меня, поэтому я обновил его с помощью этого sed -r 's/^\.\///' – mfink 25 January 2018 в 00:21
  • 2
    Вы правы, я пропустил / в конце! Спасибо за HUD. – George Udosen 25 January 2018 в 08:25
  • 3
    @muru Я пробовал это for d in ./*;do [[ -d "$d" ]] && echo "${d%/}";done, и он не дал вывод, который вы предлагаете, это скорее "${d##./}" выполняет эту работу. – George Udosen 25 January 2018 в 08:41

Улучшая текущий код, эта команда должна быть полезна:

for d in ./*;do [[ -d "$d" ]] && echo "$d" >> dir.txt; done

Чтобы удалить ./ с выхода:

for d in ./*;do [[ -d "$d" ]] && echo "${d##./}" >> dir.txt; done
2
ответ дан 17 July 2018 в 23:22

Улучшая текущий код, эта команда должна быть полезна:

for d in ./*;do [[ -d "$d" ]] && echo "$d" >> dir.txt; done

Чтобы удалить ./ с выхода:

for d in ./*;do [[ -d "$d" ]] && echo "${d##./}" >> dir.txt; done
2
ответ дан 24 July 2018 в 13:53

Вы добавляете записи (>>), где вы должны их переписывать (>). Лучше использовать find. Чтобы найти все подкаталоги рекурсивно, используйте

find . -type d > directories.txt

. Чтобы найти подкаталоги только в текущем каталоге, используйте

find . -type d -maxdepth 1 > directories.txt

-type d, чтобы найти список только файлов каталога.

1
ответ дан 22 May 2018 в 15:36

Меня удивляет нехватка точки с запятой (;) в вашем решении, неужели ваша проблема сохраняется, когда вы делаете:

for d in *; do echo $d >> directories.txt; done

? Это работает для меня отлично. Кроме того, вы уверены, что запустили его в bash? Наконец, проблема «>>» может быть проблемой, вы можете добавлять имена каталогов несколько раз.

Не говоря уже о том, что если вы хотите перечислять только каталоги (а не файлы), вы могли бы сделать: [ ! d2]

for d in `find . -type d -maxdepth 1`; do echo $d >> directories.txt; done

или даже проще:

find . -type d -maxdepth 1 > directories.txt
0
ответ дан 22 May 2018 в 15:36
  • 1
    Я вижу «maxdepth 1» в другом ответе, который только что появился. В самом деле, я опустил его, добавив теперь для согласованности. – Maciek 11 January 2018 в 11:51

Меня удивляет нехватка точки с запятой (;) в вашем решении, неужели ваша проблема сохраняется, когда вы делаете:

for d in *; do echo $d >> directories.txt; done

? Это работает для меня отлично. Кроме того, вы уверены, что запустили его в bash? Наконец, проблема «>>» может быть проблемой, вы можете добавлять имена каталогов несколько раз.

Не говоря уже о том, что если вы хотите перечислять только каталоги (а не файлы), вы могли бы сделать: [ ! d2] for d in `find . -type d -maxdepth 1`; do echo $d >> directories.txt; done

или даже проще:

find . -type d -maxdepth 1 > directories.txt
0
ответ дан 17 July 2018 в 23:22

Вы добавляете записи (>>), где вы должны их переписывать (>). Лучше использовать find. Чтобы найти все подкаталоги рекурсивно, используйте

find . -type d > directories.txt

. Чтобы найти подкаталоги только в текущем каталоге, используйте

find . -type d -maxdepth 1 > directories.txt

-type d, чтобы найти список только файлов каталога.

1
ответ дан 17 July 2018 в 23:22

Меня удивляет нехватка точки с запятой (;) в вашем решении, неужели ваша проблема сохраняется, когда вы делаете:

for d in *; do echo $d >> directories.txt; done

? Это работает для меня отлично. Кроме того, вы уверены, что запустили его в bash? Наконец, проблема «>>» может быть проблемой, вы можете добавлять имена каталогов несколько раз.

Не говоря уже о том, что если вы хотите перечислять только каталоги (а не файлы), вы могли бы сделать: [ ! d2] for d in `find . -type d -maxdepth 1`; do echo $d >> directories.txt; done

или даже проще:

find . -type d -maxdepth 1 > directories.txt
0
ответ дан 24 July 2018 в 13:53
  • 1
    Я вижу «maxdepth 1» в другом ответе, который только что появился. В самом деле, я опустил его, добавив теперь для согласованности. – Maciek 11 January 2018 в 11:51

Вы добавляете записи (>>), где вы должны их переписывать (>). Лучше использовать find. Чтобы найти все подкаталоги рекурсивно, используйте

find . -type d > directories.txt

. Чтобы найти подкаталоги только в текущем каталоге, используйте

find . -type d -maxdepth 1 > directories.txt

-type d, чтобы найти список только файлов каталога.

1
ответ дан 24 July 2018 в 13:53

Другие вопросы по тегам:

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