Как проверить, существуют ли определенные имена файлов в каталоге или нет? [закрыто]

0
04.07.2018, 13:25
3 ответа

Вы можете запустить ls для имен файлов, которые хотите проверить, например.:

$ ls -ld /opt/backup/10005{1,2,3}

ls: cannot access '/opt/backup/100052': No such file or directory
ls: cannot access '/opt/backup/100053': No such file or directory
-rw-r--r-- 1 root root 0 Jul  4 09:25 /opt/backup/100051

В этом примере видно, что /opt/backup/100051существует, а /opt/backup/100052и /opt/backup/100053— нет.

  • -lне является обязательным, но я думаю, что он имеет более полезный вывод
  • -dдля предотвращения вывода содержимого каталога

Если вы хотите проверить из скрипта, используйте-f:

for f in /opt/backup/10005{1,2,3}; do
  if [ -f "$f" ]; then
    echo "Exists: $f"
  else
    echo "Not Exists: $f"
  fi
done

Выход:

Exists: /opt/backup/100051
Not Exists: /opt/backup/100052
Not Exists: /opt/backup/100053
1
28.01.2020, 02:42

Это типичное использование команды find :

find /opt/backup -type f -name "100051" -o -name "100052" -o -name "100053"
  • -тип f фильтрует только файлы

  • -o аргумент означает ИЛИ

  • -имя позволяет указать шаблон имени

Вы также можете определить номер уровня, на котором вы хотите выполнить поиск, используя - maxdepthили -mindepth

.

Если файлы найдены, вывод будет:

/opt/backup/100051
/opt/backup/100052
/opt/backup/100053
0
28.01.2020, 02:42

Когда это всего лишь один -случай и мне не особо хочется много думать, я нахожу завершение табуляции быстрой проверкой точного имени или существование определенного файла или каталога (в большинстве оболочек, в любом случае ). Я обычно начинаю с lsили cat, например:

ls /opt/backup/10003[TAB]

... где [TAB]— простое нажатие клавиши табуляции. Соответствующее имя файла будет заполнено, если есть только одно возможное завершение. Если существует более одной возможности, будет возвращен их список. Некоторым оболочкам требуется более одного нажатия клавиши [TAB], прежде чем они вернут список кандидатов.

100030    100031    100032    100033

Возможно, конечно, что оболочка не разрешает завершение с помощью табуляции по умолчанию (или вообще ). По моему опыту, это было довольно редко. Мне на ум приходит конкретная установка старой версии Solaris.

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

0
28.01.2020, 02:42

Теги

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