Я хочу переместить файл в папку на основе расширения своего файла. пример: если файл является .csv, он должен перейти в папку COMPLETED, если файл имеет любое расширение, отличное от любого .csv, тогда он должен перейти в папку REGULAR.unix shell scripting-using mv command in if condition
Ниже приведен сценарий моей оболочки и не работает. Не могли бы вы сообщить мне, в чем проблема?
#!/bin/bash
cd /apps/int/apd/$1/work
if ls /apps/int/apd/$1/work/*.csv &> /dev/null; then
mv *.csv /apps/int/apd/$1/COMPLETED
else
/apps/int/apd/$1/Regular
fi
Проверка на наличие файлов csv перед вызовом 'mv' позволяет разделить два возможных пути: mv' может не работать: невозможно переместить файл с буквами« * .csv »и не иметь возможности переместить фактический csv-файлы. – chepner
Но из требования, что я вижу, должен быть перемещен любой файл с расширением '.csv'. Таким образом, даже если имя файла буквально «* .csv», я думаю, что его также следует перенести. – Fazlin
Скорее всего, однако, что нет файла с именем '* .csv', но это имя передается' mv' оболочкой, что приведет к сбою 'mv'. Поскольку вы отключите сообщение об ошибке, чтобы избежать этого, вы не будете знать, была ли какая-то другая проблема с 'mv', например, каталог' COMPLETED' не существует. Лучше проверить условия ошибки, которые вы * можете * предвидеть и показывать сообщения об ошибках, которые вы не можете. Одним из возможных последствиях является то, что первый «mv» терпит неудачу, затем * все * файлы перемещаются в 'Regular'. – chepner