Как можно найти все файлы с определенным названием?

Как можно автоматически рассортировать множество файлов с разными названиями по заданным папкам или найти одновременно 30 файлов с уникальными именами?
  • 22 января 2024 г. 11:00
Ответы на вопрос 3
Найти файлы с определенным названием:

1. Используя консольную команду. Вам нужно открыть консоль (или терминал) и воспользоваться командой `find` в Linux или macOS, или `dir` в Windows.

   На Linux или macOS:
   ```bash
   find /путь/до/директории -type f -name 'название_файла'
   ```
   Замените `/путь/до/директории` на директорию, в которой необходимо осуществить поиск, и 'название_файла' на искомое название файла. Если название файла содержит подстановочные символы или паттерны, используйте их в кавычках.

   На Windows с помощью команды `dir`:
   ```cmd
   dir /s /b название_файла
   ```
   Замените `название_файла` на искомое название файла и добавьте `*` в качестве подстановочных знаков, если это необходимо.

2. Использование инструментов поиска в вашей операционной системе, таких как "Поиск" в Windows или "Spotlight" в macOS.

Автоматическая сортировка файлов:

Для автоматической сортировки файлов вам потребуется написать скрипт на Bash (Linux/macOS) или PowerShell/Batch (Windows), или же использовать специализированные программы для автоматизации задач. Ниже приведен пример скрипта на Bash, который сортирует файлы по заданным папкам основываясь на их названиях.

```bash
#!/bin/bash

# Задайте ваш каталог, в котором лежат файлы для сортировки
path_to_files="/путь/к/файлам"

# Создайте ассоциативный массив, где ключ — это шаблон названия файла, а значение — директория для перемещения
declare -A sorting_rules
sorting_rules=(
    ["invoice*"]="$path_to_files/invoices"
    ["report*"]="$path_to_files/reports"
    # Добавьте другие правила здесь
)

for pattern in "${!sorting_rules[@]}"; do
    target_directory="${sorting_rules[$pattern]}"
    # Создайте целевую папку если она не существует
    mkdir -p "$target_directory"
    # Найдите и переместите файлы по заданному шаблону
    find "$path_to_files" -maxdepth 1 -type f -name "$pattern" -exec mv {} "$target_directory" \;
done
```

Найти одновременно 30 файлов с уникальными именами:

Если у вас есть список из 30 уникальных имен файлов, вы можете использовать цикл в Bash для их поиска или написать скрипт на другом языке.

В Bash:

```bash
#!/bin/bash

# Ваш каталог для поиска
search_dir="/путь/до/директории"

# Файл с списком имен
file_list="/путь/к/файлу/со/списком"

# Читайте каждое имя файла из списка и ищите его
while IFS= read -r filename; do
    find "$search_dir" -type f -name "$filename"
done < "$file_list"
```
Убедитесь, что файл со списком содержит одно имя файла на строку.
Такое можно сделать быстро с помощью экселя. Из таблицы формируете столбец, в котором будет сконкатенированы команды вида построчно для каждого файла. Копируете этот столбец, вставляете в текстовый .bat-файл и выполняете его.
Вариант на Python: 
1. Возьмет данные из таблицы files.
2. Переместит файлы (не существующие директории будут созданы, а уже существующие файлы не будет перезаписаны).

Файлы необходимо разместить по адресу из переменной path.
Похожие вопросы