用addall编写一个脚本,它将带有若干个文件名作为运行参数,脚本的功能是统计这些文件的大小之和
时间: 2024-03-23 12:43:11 浏览: 12
好的,以下是使用addall编写的脚本,可以实现统计多个文件大小之和的功能:
```bash
#!/bin/bash
# 使用addall统计多个文件大小之和
total_size=0
# 遍历每个文件名,统计文件大小
for file in "$@"; do
if [ -f "$file" ]; then
size=$(stat -c%s "$file")
total_size=$(($total_size + $size))
fi
done
# 输出总大小
echo "Total size: $total_size bytes"
```
使用方法:
将以上脚本保存到一个名为`addall.sh`的文件中,然后在命令行中运行:
```
$ bash addall.sh file1.txt file2.txt file3.txt
```
其中`file1.txt`、`file2.txt`、`file3.txt`为待统计大小的文件。
脚本会遍历每个文件,若文件存在则获取文件大小并累加到`total_size`变量中,最后输出总大小。
相关问题
根据例10-57中的addall脚本编写一个脚本,它带有若干文件名作为运行参数,脚本的功能是统计这些文件的大小之和。
可以使用以下脚本实现:
```bash
#!/bin/bash
# 检查输入参数
if [ $# -eq 0 ]; then
echo "Usage: $0 file1 [file2 ...]"
exit 1
fi
# 初始化变量
size=0
# 循环处理每个文件
for file in $@
do
# 检查文件是否存在
if [ ! -f $file ]; then
echo "$file does not exist."
continue
fi
# 获取文件大小并累加到总大小
file_size=$(du -b $file | awk '{print $1}')
size=$((size + file_size))
done
# 输出结果
echo "Total size: $size bytes"
```
可以使用 `du -b` 命令获取文件大小,`awk '{print $1}'` 用于提取文件大小,`$((size + file_size))` 用于将当前文件大小累加到总大小中。
Java编写 键盘录入一个文件夹路径和一个文件名,当前目录(包含子目录)下是否有该文件,有则返回该文件的绝对路径,没有则返回null。
好的,以下是一个Java程序,可以实现你的要求:
```java
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class SearchFile {
public static void main(String[] args) {
// 读取文件夹路径和文件名
System.out.print("请输入文件夹路径:");
String path = System.console().readLine();
System.out.print("请输入文件名:");
String fileName = System.console().readLine();
// 查找文件
List<String> filePaths = searchFile(new File(path), fileName);
// 输出结果
if (filePaths.isEmpty()) {
System.out.println("没有找到文件:" + fileName);
} else {
for (String filePath : filePaths) {
System.out.println("找到文件:" + filePath);
}
}
}
private static List<String> searchFile(File folder, String fileName) {
List<String> filePaths = new ArrayList<>();
if (folder.isDirectory()) {
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
filePaths.addAll(searchFile(file, fileName));
} else {
if (file.getName().equals(fileName)) {
filePaths.add(file.getAbsolutePath());
}
}
}
}
}
return filePaths;
}
}
```
你只需要在命令行中编译并运行上述代码即可。注意:代码中使用了递归的方式来遍历文件夹和子文件夹,如果文件夹层级很深,可能会导致栈溢出。如果你需要处理大量的文件和文件夹,建议使用非递归的方式来实现。