С помощью оболочки найдите все подкаталоги, которые содержат определенные файлы

Чтобы декодировать HTML-объекты с помощью jQuery, просто используйте эту функцию:

function html_entity_decode(txt){
    var randomID = Math.floor((Math.random()*100000)+1);
    $('body').append('<div id="random'+randomID+'"></div>');
    $('#random'+randomID).html(txt);
    var entity_decoded = $('#random'+randomID).html();
    $('#random'+randomID).remove();
    return entity_decoded;
}

Как использовать:

Javascript:

var txtEncoded = "&aacute; &eacute; &iacute; &oacute; &uacute;";
$('#some-id').val(html_entity_decode(txtEncoded));

HTML:

<input id="some-id" type="text" />
2
задан Kalec 9 May 2012 в 13:17
поделиться

2 ответа

Я интерпретировал бы Ваши требования, поскольку "находят все подкаталоги, которые содержат все определенные файлы"

#!/bin/bash
parent_dir="$1"
shift
find "$parent_dir" -type d |
while IFS= read -r subdir; do
  all_present=true
  for file in "$@"; do
    if [[ ! -f "$subdir/$file" ]]; then
      all_present=false
      break
    fi
  done
  $all_present && echo "$subdir"
done

, "IFS =" и "читала,-r" части гарантируют, что значение "dir" содержит фактическое имя каталога, даже если она включает пробелы или специальные символы.

1
ответ дан glenn jackman 22 October 2019 в 14:47
поделиться

Если я понимаю правильно, что Вы хотите сделать, это - решение:

#!/bin/sh

USAGE="Usage: [110] dir file1 file2 ... fileN\nto find all subdirectories of dir that contain all the given files.\n"

if [ "$#" == "0" ]; then
    printf "$USAGE"
    exit 1
fi

ARG=""
DIR=$1
shift

while (( "$#" )); do
  ARG="$ARG -exec test -e \"{}/$1\" \; "
  shift
done

cmd="find $DIR -type d $ARG -print"
eval $cmd

то, Что это делает, является этим:

использование find ... -type d для нахождения всех подкаталогов (включая каталог данными как первый параметр). test -e команда проверяет, существует ли файл. Таким образом для данного каталога мы должны проверить все файлы, данные в командную строку: тестовый-e/path/to/directory/file1 тестирует тестовый-e/path/to/directory/file3-e/path/to/directory/file2... Эти /path/to/directory {} - единственный результат находки. Затем находить-параметр -exec может использоваться для проверки на единственный файл. Для проверки на все файлы нескольких -exec test, параметры необходимы. Так сборка цикла с условием продолжения список там параметров, затем этот список соединен в единственной команде и оценен.

Весело проводят время...

1
ответ дан Thomas 22 October 2019 в 14:47
поделиться
Другие вопросы по тегам:

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