Вывод списка только каталогов, использующих ls в bash: экзамен

SharedPreferences кажется уродливым решением для меня. Это гораздо более удобно, когда вы используете конструктор приложений для таких целей.

Все, что вам нужно, это использовать свой собственный класс приложения, а не по умолчанию.

public class MyApp extends Application {

    public MyApp() {
        // this method fires only once per application start. 
        // getApplicationContext returns null here

        Log.i("main", "Constructor fired");
    }

    @Override
    public void onCreate() {
        super.onCreate();    

        // this method fires once as well as constructor 
        // but also application has context here

        Log.i("main", "onCreate fired"); 
    }
}

Затем вы должны зарегистрировать этот класс как ваш класс приложения в AndroidManifest.xml

<application android:label="@string/app_name" android:name=".MyApp"> <------- here
    <activity android:name="MyActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
</application>

Вы даже можете нажать кнопку «Назад», поэтому приложение перейдет на задний план и не будет тратить ресурсы процессора, только ресурс памяти, а затем вы можете запустить его снова и конструктор все еще не горит, так как приложение еще не закончено.

Вы можете очистить память в диспетчере задач, чтобы все приложения были закрыты, а затем перезапустите приложение, чтобы убедиться, что ваш код инициализации снова запущен.

846
задан guaka 19 September 2015 в 17:25
поделиться

10 ответов

*/ - это шаблон, который соответствует всем подкаталогам в текущем каталоге (* будет соответствовать всем подкаталогам файлов и ; / ограничивает его каталогами). Точно так же, чтобы перечислить все подкаталоги в / home / alice / Documents, используйте ls -d /home/alice/Documents/*/

891
ответ дан Gordon Davisson 19 September 2015 в 17:25
поделиться
file *|grep directory

O / P (На моей машине) -

[root@rhel6 ~]# file *|grep directory
mongo-example-master:    directory
nostarch:                directory
scriptzz:                directory
splunk:                  directory
testdir:                 directory

Вышеуказанный результат можно улучшить, используя cut.

file *|grep directory|cut -d':' -f1
mongo-example-master
nostarch
scriptzz
splunk
testdir

* could be replaced with any path that's permitted
 file - determine file type
 grep - searches for string named directory
 -d - to specify a field delimiter
 -f1 - denotes field 1
0
ответ дан AVS 19 September 2015 в 17:25
поделиться

Попробуйте это. это будет работать на всех дистрибутивах ls -ltr | grep drw

1
ответ дан Raj RD 19 September 2015 в 17:25
поделиться

*/ - это шаблон сопоставления имен файлов, который соответствует каталогам в текущем каталоге.

Чтобы перечислять только каталоги, мне нравится эта функция:

# long list only directories
llod () { 
  ls -l --color=always "$@" | grep --color=never '^d'
}

Поместите ее в свой .bashrc.

Примеры использования:

llod       # long listing of all directories in current directory
llod -tr   # same but in chronological order oldest first
llod -d a* # limit to directories beginning with letter 'a'
llod -d .* # limit to hidden directories

ПРИМЕЧАНИЕ: он сломается, если вы используете опцию -i. Вот исправление для этого:

# long list only directories
llod () { 
  ls -l --color=always "$@" | egrep --color=never '^d|^[[:digit:]]+ d'
}
2
ответ дан Robin A. Meade 19 September 2015 в 17:25
поделиться

Проверьте, является ли элемент каталогом с помощью test -d:

for i in $(ls); do test -d $i && echo $i ; done
4
ответ дан muru 19 September 2015 в 17:25
поделиться

Вот что я использую

ls -d1 /Directory/Path/*;

5
ответ дан Banning 19 September 2015 в 17:25
поделиться

Я использую:

ls -d */ | cut -f1 -d'/'

Это создает один столбец без косой черты - полезно в сценариях.

Мои два цента.

85
ответ дан Anatoliy Nikolaev 19 September 2015 в 17:25
поделиться

Четыре способа сделать это, каждый с разным форматом вывода

1. Используя echo

Пример: echo */, echo */*/
Вот что я получил:

cs/ draft/ files/ hacks/ masters/ static/  
cs/code/ files/images/ static/images/ static/stylesheets/  

2. Используя только ls

Пример: ls -d */
Вот именно то, что я получил:

cs/     files/      masters/  
draft/  hacks/      static/  

Или в виде списка (с подробной информацией): ls -dl */

3. Используя ls и grep

Пример: ls -l | grep "^d" Вот что я получил:

drwxr-xr-x  24 h  staff     816 Jun  8 10:55 cs  
drwxr-xr-x   6 h  staff     204 Jun  8 10:55 draft  
drwxr-xr-x   9 h  staff     306 Jun  8 10:55 files  
drwxr-xr-x   2 h  staff      68 Jun  9 13:19 hacks  
drwxr-xr-x   6 h  staff     204 Jun  8 10:55 masters  
drwxr-xr-x   4 h  staff     136 Jun  8 10:55 static  

4. Скрипт Bash (не рекомендуется для имени файла, содержащего пробелы)

Пример: for i in $(ls -d */); do echo ${i%%/}; done
Вот что я получил:

cs  
draft  
files  
hacks  
masters  
static

Если вы хотите иметь '/' в качестве конечного символа команда будет: for i in $(ls -d */); do echo ${i}; done

cs/  
draft/  
files/  
hacks/  
masters/  
static/
442
ответ дан Iulian Onofrei 19 September 2015 в 17:25
поделиться

Самая короткая команда когда-либо (на самом деле взлом) для списка только каталогов. Введите в полном пути или относительном пути каталога интереса. Введите CD и поразите вкладку. Только каталоги показывают.

$ cd 

Самый Короткий действительно.

1
ответ дан Prometheus 4 November 2019 в 06:40
поделиться
  • 1
    @todda.speot.is: не портативный через версии MySQL? – Sergio Tulentsev 12 January 2012 в 15:24

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

tree -d | grep -E '^[├|└]' | cut -d ' ' -f2

или с awk

tree -d | grep -E '^[├|└]' | awk '{print $2}'

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

ls -l | grep "^d" | awk '{print $9}'
1
ответ дан 22 November 2019 в 21:06
поделиться
Другие вопросы по тегам:

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