Найдите каталоги, которые не содержат подкаталоги

Во-первых, запишите вывод ps -ef | grep java к названному "имени файла" файла затем создают файл Python:

import os

f = open('filename',r')`
for i in f:
    a = i.split()
    b= "kill "
    b=b+str(a[1])
    os.system(b)

Выполните его с python pythonfilename.py и Ваши программы Java будут завершены.

10
22.11.2018, 00:03
4 ответа

Вы не должны использовать awk вообще. Используйте встроенные тесты это ksh обеспечивает, что-то вроде этого:

#!/bin/ksh

for NAME in *
do
    FOUND=no
    if [[ -d $NAME && $NAME != '.' && $NAME != '..' ]]
    then
        for SUBNAME in $NAME/*
        do
            if [[ -d $SUBNAME ]]
            then
                FOUND=yes
                break
            fi
        done
        if [[ $FOUND == no ]]
        then
            echo Found only files in $NAME
        fi
    fi
done

Тот небольшой сценарий смотрит во всех каталогах в текущем каталоге и говорит Вам, если они только содержат файлы, никакие подкаталоги.

1
27.01.2020, 20:01

*/ соответствует подкаталогам текущего каталога. Это включает символьные ссылки на каталоги, которых Вы можете или не можете требовать.

В ksh93, добавляя ~(N) в начале шаблона заставляет его расшириться до пустого списка, если там не идет ни в какое сравнение. Без этого шаблон остается неизменным, если там не идет ни в какое сравнение.

Следующая функция ksh93 перечисляет подкаталоги текущих каталогов, которые не содержат подкаталога или ссылки на каталог.

list_leaf_directories () {
  local FIGNORE='.?(.)'        # don't ignore dot files
  local d
  for d in */; do
    [[ -L $d ]] || continue;   # skip symbolic links
    set -- ~(N)"$d"/*/
    if ((!$#)); then echo "$d"; fi
  done
done
3
27.01.2020, 20:01

если я не неправильно понимаю Вас, Вы только хотите найти файлы в каталоге не подкаталогами. Если это - Ваше намерение, вот решение

find . -type f

если Вы хотите найти кроме регулярных файлов (как файлы блочного устройства, файлы устройства посимвольного ввода-вывода и т.д.) затем см. страницу справочника для find управляйте и ищите ключевое слово типа на той странице. Вы будете видеть различные типы файлов, включая регулярные файлы и каталоги и т.д.

Надежда это - то, что Вы ищете

0
27.01.2020, 20:01
  • 1
    Нет, это не вопрос вообще. Это довольно ясно однажды Вы s/catalogue/directory/g. Nat Kup ищет каталоги, которые не содержат подкаталоги. –  Gilles 'SO- stop being evil' 21.03.2013, 01:12

Если вы сможете использовать Найти , и если вы работаете над «обычной файловой системой Unix» (то есть, как определено в Найти (1) Под -NOLEAF Описание параметра), то можно использовать следующую команду:

find . -type d -links 2

каждый каталог имеет как минимум 2 имена (жесткие ссылки): . и его имя. Его подкаталоги, если таковые имеются, будет иметь .. .. , указывая на родительский каталог, поэтому каталог с N подкаталогов будет иметь жесткое количество ссылок, равное N + 2. Таким образом, в поисках каталогов с графом жестких ссылок равным 2, мы ищем каталоги с N = 0 подкаталоги.

Итак, если вы можете использовать Найти , это возможно, является самым быстрым способом и, очевидно, превосходит петли в оболочке по содержимому каталога stat () Отказ

14
27.01.2020, 20:01

Теги

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