用shell打印给定目录下的某些文件,由第一个参数指出文件所在的目录,其余参数是要打印的文件名
时间: 2023-04-09 14:01:05 浏览: 140
可以使用以下命令来实现:
```
#!/bin/bash
dir=$1
shift
for file in "$@"
do
cat "$dir/$file"
done
```
其中,`$1` 表示第一个参数,即目录名,`shift` 命令将参数列表向左移动一个位置,使得 `$2` 变成了第一个参数,`$@` 表示所有参数。然后使用 `for` 循环遍历所有文件名,使用 `cat` 命令打印文件内容。
相关问题
写一个将目录下所有的文件名打印到txt文件中的shell脚本
可以使用以下 shell 脚本将指定目录下所有文件名打印到一个 txt 文件中:
```
#!/bin/bash
# 指定目录路径
dir_path="/path/to/directory"
# 将目录下所有文件名保存到 files.txt 文件中
ls $dir_path > files.txt
```
这个脚本会使用 ls 命令列出指定目录下的所有文件名,并将结果输出到一个名为 files.txt 的文件中。
如果需要将结果追加到已有的文件中,可以使用 >> 符号,例如:
```
ls $dir_path >> files.txt
```
希望可以帮助到您!
编写一个shell程序,打印/tmp目录下的所有文件大小超过1024字节的文件名
好的,以下是一个简单的shell程序,可以实现您的需求:
```
#!/bin/bash
# 切换到 /tmp 目录
cd /tmp
# 打印所有文件名,如果文件大小超过 1024 字节
for file in *
do
if [ -f "$file" ] && [ $(stat -c%s "$file") -gt 1024 ]
then
echo "$file"
fi
done
```
您可以将以上代码保存为一个 `.sh` 文件,并在终端中执行该文件,即可打印出所有符合条件的文件名。
请注意,以上程序只会打印文件名,不会打印文件的大小。如果您需要打印文件大小,可以在 `echo` 语句中添加文件大小的输出,例如:
```
echo "$file $(stat -c%s "$file") bytes"
```
这会打印出类似于 `filename 1234 bytes` 的输出。