
Я пишу скрипт для создания каталога с именем сегодняшней даты (yyyy_mm_dd), а затем перемещаю все файлы, заканчивающиеся на сегодняшнюю дату, в этот каталог. Есть ли лучший способ переместить файлы в каталог, поскольку то, что я сделал, также выбирает каталог.
now=$(date '+%Y_%m_%d')
mkdir $now
mv *$now $now/
решение1
mv *?"$now" "$now/."
гарантирует, что только что созданный вами каталог не будет выбран для перемещения, поскольку ?
перед меткой времени должен быть хотя бы один символ ( ).
решение2
Команда find
может фильтровать как по типам файлов, так и по именам файлов.
Так что я думаю, что это сделает то, что вам нужно:
now=$(date '+%Y_%m_%d')
find . -name "*$now" -type f -print0 | xargs -0 mv -t $now/
хотя вам, возможно, придется подумать, нет ли каких-либо странностей в именах ваших файлов (например, других каталогов, содержащих строку даты), прежде чем запускать это на большом пакете.