回答編集履歴
6
余計なスペースが出力されていたので修正
test
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
#!/bin/bash
|
32
32
|
|
33
33
|
lines=$(join -j2 -o '1.1 1.2 2.1' <(find . -type f -printf '%TY-%Tm %p\n' | sort -k2) <(find . -type f | xargs wc -l | sort -k2) | sort -V)
|
34
|
-
lines=$(echo "$lines" | awk '{ map[$1] = map[$1] "\t" $3 " " $2 } END { for(key in map) print key
|
34
|
+
lines=$(echo "$lines" | awk '{ map[$1] = map[$1] "\t" $3 " " $2 } END { for(key in map) print key map[key] }' | sort -V)
|
35
35
|
|
36
36
|
IFS=$'\n'
|
37
37
|
for line in $(echo "$lines"); do
|
5
高速化しました
test
CHANGED
@@ -30,33 +30,17 @@
|
|
30
30
|
```bash
|
31
31
|
#!/bin/bash
|
32
32
|
|
33
|
+
lines=$(join -j2 -o '1.1 1.2 2.1' <(find . -type f -printf '%TY-%Tm %p\n' | sort -k2) <(find . -type f | xargs wc -l | sort -k2) | sort -V)
|
34
|
+
lines=$(echo "$lines" | awk '{ map[$1] = map[$1] "\t" $3 " " $2 } END { for(key in map) print key, map[key] }' | sort -V)
|
35
|
+
|
33
36
|
IFS=$'\n'
|
34
|
-
|
35
|
-
declare -A map
|
36
|
-
declare -a map_keys
|
37
|
-
lines=''
|
38
|
-
|
39
|
-
for f in $(find . -type f); do
|
40
|
-
lines+="$f"$'\n'
|
41
|
-
done
|
42
|
-
|
43
|
-
for time_path in $(echo "$lines" | xargs ls -l --time-style='+%Y-%m' | awk '{print $6, $7}' | sort); do
|
44
|
-
time=$(echo "$time_path" | awk '{print $1}')
|
45
|
-
path=$(echo "$time_path" | awk '{print $2}')
|
46
|
-
rows=$(wc -l "$path" | awk '{print $1}')
|
47
|
-
if [ -n "${map[$time]}" ]; then
|
48
|
-
map["$time"]+=$'\t'
|
49
|
-
else
|
50
|
-
map_keys+=("$time")
|
51
|
-
fi
|
52
|
-
map["$time"]+="$rows $path"
|
53
|
-
done
|
54
|
-
|
55
|
-
for
|
37
|
+
for line in $(echo "$lines"); do
|
56
|
-
|
38
|
+
strs=$(echo "$line" | tr $'\t' $'\n')
|
39
|
+
time=$(echo "$strs" | head -n 1)
|
40
|
+
strs=$(echo "$strs" | tail -n +2)
|
57
|
-
sum=$(echo "$
|
41
|
+
sum=$(echo "$strs" | awk '{s += $1} END {print s}')
|
58
42
|
echo "==== $time: $sum"
|
59
|
-
echo "$
|
43
|
+
echo "$strs"
|
60
44
|
echo
|
61
45
|
done
|
62
46
|
```
|
4
main.sh を修正
test
CHANGED
@@ -36,11 +36,11 @@
|
|
36
36
|
declare -a map_keys
|
37
37
|
lines=''
|
38
38
|
|
39
|
-
for f in $(find . -type f
|
39
|
+
for f in $(find . -type f); do
|
40
|
-
lines+=
|
40
|
+
lines+="$f"$'\n'
|
41
41
|
done
|
42
42
|
|
43
|
-
for time_path in $(echo "$lines" | sort); do
|
43
|
+
for time_path in $(echo "$lines" | xargs ls -l --time-style='+%Y-%m' | awk '{print $6, $7}' | sort); do
|
44
44
|
time=$(echo "$time_path" | awk '{print $1}')
|
45
45
|
path=$(echo "$time_path" | awk '{print $2}')
|
46
46
|
rows=$(wc -l "$path" | awk '{print $1}')
|
3
find の引数を修正
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
declare -a map_keys
|
37
37
|
lines=''
|
38
38
|
|
39
|
-
for f in $(find -type f | sort); do
|
39
|
+
for f in $(find . -type f | sort); do
|
40
40
|
lines+=$(ls -l --time-style='+%Y-%m' "$f" | awk '{print $6, $7}')$'\n'
|
41
41
|
done
|
42
42
|
|
2
main.sh を修正
test
CHANGED
@@ -36,18 +36,14 @@
|
|
36
36
|
declare -a map_keys
|
37
37
|
lines=''
|
38
38
|
|
39
|
-
for f in $(find
|
39
|
+
for f in $(find -type f | sort); do
|
40
|
-
|
40
|
+
lines+=$(ls -l --time-style='+%Y-%m' "$f" | awk '{print $6, $7}')$'\n'
|
41
|
+
done
|
42
|
+
|
43
|
+
for time_path in $(echo "$lines" | sort); do
|
41
44
|
time=$(echo "$time_path" | awk '{print $1}')
|
42
45
|
path=$(echo "$time_path" | awk '{print $2}')
|
43
46
|
rows=$(wc -l "$path" | awk '{print $1}')
|
44
|
-
lines+="$time $path $rows"$'\n'
|
45
|
-
done
|
46
|
-
|
47
|
-
for time_path_rows in $(echo "$lines" | sort); do
|
48
|
-
time=$(echo "$time_path_rows" | awk '{print $1}')
|
49
|
-
path=$(echo "$time_path_rows" | awk '{print $2}')
|
50
|
-
rows=$(echo "$time_path_rows" | awk '{print $3}')
|
51
47
|
if [ -n "${map[$time]}" ]; then
|
52
48
|
map["$time"]+=$'\t'
|
53
49
|
else
|
1
find の引数を修正
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
declare -a map_keys
|
37
37
|
lines=''
|
38
38
|
|
39
|
-
for f in $(find -type f | sort); do
|
39
|
+
for f in $(find . -type f | sort); do
|
40
40
|
time_path=$(ls -l --time-style='+%Y-%m' "$f" | awk '{print $6, $7}')
|
41
41
|
time=$(echo "$time_path" | awk '{print $1}')
|
42
42
|
path=$(echo "$time_path" | awk '{print $2}')
|