1、Linux 统计多个文件的合计大小输出精确的字节数
M 单位输出:-cm
G单位输出:-ch
kb单位输出:-ck
```bash
du -cb /path/to/files/* | grep total$ | awk '{print $1}'
&&
du -cb '/path/to/files/a.csv' '/path/to/files/b.csv' '/path/to/files/c.csv' | grep total$ | awk '{print $1}'
```
在这个命令中,`-b`选项告诉`du`命令以字节为单位显示文件大小。
`grep`命令用于筛选出包含"total"的行,即合计行。
`awk`命令用于提取合计大小并进行输出。
请确保将`/path/to/files/*`替换为您实际的文件路径。
2、 Linux 统计hdfs多文件的合计大小以字节单位输出
以下是一个示例命令来统计HDFS上多个文件的合计大小:
```bash
hdfs dfs -du -s /path/to/files/* | awk '{sum+=$1} END {print sum}'
&&
hdfs dfs -du -s '/path/to/files/a.csv' '/path/to/files/b.csv' '/path/to/files/c.csv' | awk '{sum+=$1} END {print sum}'
```
在这个命令中,`hdfs dfs -du`用于显示HDFS上文件的大小,`-s`选项用于汇总文件大小,`/path/to/files/*`是您要统计的多个文件的路径。
`awk`命令用于提取文件大小并进行求和。
请确保将`/path/to/files/*`替换为您实际的文件路径。
3、Linux 如果出现csv文件内容出现换行符需要替换掉
# linux
# ① 如果出现csv文件内容出现换行符需要替换掉,并另存为一个新文件
shell = rf"""sed -e ':a' -e 'N' -e '$!ba' -e 's/\([^"]\)\n/\1/g' {remote_file} > {transform_file_path}"""
# ② 如果出现csv文件内容出现换行符需要替换掉,覆盖源文件
shell = rf"""sed -i ':a;N;$!ba;s/\([^"]\)\n/\1/g' {remote_file}"""
解释:
-
sed -i
:这是sed
的编辑文件内联选项,它会直接修改文件内容。 -
:a;N;$!ba
:这是一个循环,会读取所有行并拼接成一个大的长字符串,直到文件结束。 -
s/\([^"]\)\n/\1/g
:在拼接后的字符串上执行全局替换,将前一位为非双引号的换行符替换为空。
4、hdfs dfs -rm -R -skipTrash hdfs://xxxxx
hdfs dfs -rm -R -skipTrash
是一个用于Hadoop分布式文件系统(HDFS)的命令行操作,用于删除目录和其中的所有文件。-R
或 --recursive
表示递归删除,-skipTrash
表示直接删除文件,不将其移动到垃圾箱中。
5、linux获取目录下的所有文件并且提取文件日期并追加到每一行的末尾
#!/bin/bash
local_path="/tmp/"
files=$(find $local_path -maxdepth 1 -type f -name "*.csv")
for file in $files; do
date_part=$(echo "$file" | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}')
if [ ! -z "$date_part" ]; then
echo "$file date is $date_part"
temp_file="${file}.temp"
sed -i 's/\r$//g' $file
awk -F, -v OFS=',' -v value="$date_part" '{print $0, value}' "$file" > "$temp_file"
# 用带有日期的临时文件替换原文件
mv "$temp_file" "$file"
else
echo "$file is not match date"
exit 1
fi
done