Сzsh
(и GNU find
или совместимо с-delete
):
cd -P -- "$CDIR" || exit
old_dirs=(**/*(DNm+6))
find. -mtime +6 ! -type d -delete
empty_old_dirs=($^old_dirs(N^F))
(($#empty_old_dirs == 0)) || rmdir -- $empty_old_dirs
Обратите внимание, что квалификатор glob -mtime
и zsh
's m
работает с возрастом в целочисленном (округленном вниз )количестве дней. -mtime -6
для возраста строго младше 6 лет, -mtime 6
для возраста 6 лет (таким образом, между 6 и 7 днями )и -mtime +6
для этого возраста строго больше 6, поэтому 7 дней и выше.
Таким образом, для файлов, которым более 7 дней, вам нужен -mtime +6
, а не -mtime +7
(, по крайней мере, с POSIX-совместимыми реализациями find
, не все, но в этом отношении есть GNU ).
$ awk -F, 'BEGIN { OFS = FS } $2 == 0 { $2 = $3 }; 1' user.csv
740.58,740.58,740.58,0,740.58
2452.84,2452.84,2452.84,0,2452.84
898.23,898.23,898.23,0,898.23
227.57,227.57,227.57,0,227.57
735.02,735.02,735.02,0,735.02
640.5,640.5,640.5,0,640.5
469.31,469.31,469.31,0,469.31
3744.25,3744.25,3744.25,0,3744.25
462.15,462.15,462.15,0,462.15
198.79,198.79,198.79,0,198.79
437.58,437.58,437.58,0,437.58
515.44,515.44,515.44,0,515.44
При этом используется awk
для установки второго поля (, столбца )каждой записи (, строки )на значение третьего поля, если числовое значение второго поля равно нулю.
Блок BEGIN
просто устанавливает разделитель поля вывода на любой разделитель поля ввода (это запятая, установленная в командной строке с помощью-F
).
Замыкающий 1
такой же, как { print }
, что приводит к безусловной печати каждой записи.
Что касается вашего обновления вопроса :Если вы хотите скопировать столбец 3 в столбец 2, если столбец 2 равен нулю (, как указано выше ), и в то же время скопировать столбец 5 в столбец 4, если столбец 4 равно нулю, приведенный выше код можно легко расширить следующим образом:
awk -F, 'BEGIN { OFS = FS }
$2 == 0 { $2 = $3 }
$4 == 0 { $4 = $5 }; 1' user.csv
gawk '
BEGIN {FS = OFS = "\t"}
!$5 {$5 = $2}
!$6 {$6 = $2}
1
' input.tsv
Если вывод выглядит правильно, повторно -выполните с помощьюgawk -i inplace '...' input.tsv