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

Как можно выполнить команду для каждого файла в назначенной папке с определенным расширением? Текущий скрипт обрабатывает только первый файл из папки, но не применяет команду ко всем файлам. Как изменить скрипт так, чтобы он обрабатывал все файлы в папке с расширением .locations?
  • 30 января 2024 г. 15:18
Ответы на вопрос 3
Если вы работаете в командной строке Linux или Unix-like систем (включая macOS), вы можете использовать цикл for в bash shell, чтобы пройтись по файлам в папке с заданным расширением. Например, для файлов с расширением `.locations`:

```bash
for file in /path/to/folder/*.locations; do
  # Тут выполняется ваша команда с "$file"
  echo "Обработка $file"
  # Например, выполним команду 'cat' для каждого файла
  cat "$file"
done
```

`/path/to/folder/` - путь к папке, в которой находятся файлы. Вместо `cat` нужно подставить нужную команду, которую вы хотите применить к каждому файлу.

Если вы используете Windows и работаете в командной строке CMD, вы можете использовать следующую конструкцию:

```cmd
for %%f in ("C:\path\to\folder\*.locations") do (
  REM Здесь ваша команда с "%%f"
  echo Обработка %%f
  REM Например, можно вызвать команду 'type'
  type "%%f"
)
```

А если вы используете PowerShell, синтаксис будет таким:

```powershell
Get-ChildItem -Path "C:\path\to\folder" -Filter *.locations | ForEach-Object {
  # Тут выполняется ваша команда с "$_"
  Write-Host "Обработка $($_.Name)"
  # Например, можно выполнить команду 'Get-Content'
  Get-Content $_
}
```

Убедитесь, что замените `C:\path\to\folder` на соответствующий путь к вашей папке и подставьте нужную команду вместо `echo`, `cat`, `type` или `Get-Content`.
find etc/nginx/locations/*.locations -exec ./replace_location_port.sh -n test -v v2.2.2 -p 2222 -f {} \;
- awk -i inplace '/location \/projects\/'"$location"'/,/}/ {if(/proxy_pass/) sub(/:[0-9]+.;/,":'"$port"';")} {print}' "$file"
+ awk -i inplace '/location \/projects\/'"$location"'/,/}/ {if(/proxy_pass/) sub(/:[0-9]+.;/,":'"$port"';")} {print}' $(ls $file)


./replace_location_port.sh -n who-am-i -v v2.50.6 -p 222 -f etc/nginx/locations/\*.locations
Похожие вопросы