2. 假设在当前目录下有数百个以时间戳命名的文件,如 202105251123.jpg 202105251128.jpg 202105251133.jpg 202105251209.jpg 等等等,这些文件名的共同特征是以2021开头, 请编写一个Bash脚本,将这些文件统一改名,改名的方式是在现有的文件名前加上IMG_,修改过后的文件名会是 IMG_202105251123.jpg IMG_202105251128.jpg的样子
时间: 2023-02-05 09:19:37 浏览: 161
您可以使用下面的脚本来实现这个功能:
```bash
#!/bin/bash
# 遍历当前目录下的所有文件
for file in *
do
# 如果文件名以2021开头
if [[ $file == 2021* ]]
then
# 将文件名的前面加上IMG_
mv $file IMG_$file
fi
done
```
使用方法:将上面的脚本复制到一个文本文件中,然后使用以下命令给该文件赋予执行权限:
```bash
chmod +x <脚本文件名>
```
然后,您就可以在终端中使用下面的命令来运行该脚本:
```bash
./<脚本文件名>
```
相关问题
在flume/conf目录下创建flume-hdfs.conf文件,并对其进行基础测试配置
好的,首先需要在flume/conf目录下创建一个名为flume-hdfs.conf的文件,然后将以下配置复制到文件中:
```
# Name the components on this agent
agent.sources = source1
agent.sinks = sink1
agent.channels = channel1
# Describe/configure the source
agent.sources.source1.type = exec
agent.sources.source1.command = tail -F /var/log/messages
# Describe the sink
agent.sinks.sink1.type = hdfs
agent.sinks.sink1.hdfs.path = /flume/data/%Y-%m-%d/%H
agent.sinks.sink1.hdfs.fileType = DataStream
agent.sinks.sink1.hdfs.writeFormat = Text
agent.sinks.sink1.hdfs.rollInterval = 0
agent.sinks.sink1.hdfs.rollSize = 134217728
agent.sinks.sink1.hdfs.rollCount = 0
agent.sinks.sink1.hdfs.batchSize = 1000
# Use a channel which buffers events in memory
agent.channels.channel1.type = memory
agent.channels.channel1.capacity = 10000
agent.channels.channel1.transactionCapacity = 1000
# Bind the source and sink to the channel
agent.sources.source1.channels = channel1
agent.sinks.sink1.channel = channel1
```
这个配置会启动一个agent,监控/var/log/messages文件,并将日志数据写入到HDFS中。其中,%Y-%m-%d/%H是一个时间戳,表示数据按照日期和小时进行分区存储。具体来说,数据将会被存储到/flume/data/2021-08-12/10这个目录下。
接下来,我们需要启动Flume agent并进行测试。打开终端,切换到flume目录下,然后运行以下命令:
```
bin/flume-ng agent --conf ./conf/ --conf-file ./conf/flume-hdfs.conf --name agent1 -Dflume.root.logger=INFO,console
```
这个命令会启动一个名为agent1的Flume agent,并且会将日志输出到控制台。
接下来,我们可以在/var/log/messages文件中添加一些新的日志数据,然后观察HDFS中是否成功写入了数据。我们可以使用以下命令来检查:
```
hadoop fs -ls /flume/data/2021-08-12/10
```
如果输出类似于以下内容,则表示数据已经成功写入到了HDFS中:
```
-rw-r--r-- 3 hduser supergroup 384 2021-08-12 10:19 /flume/data/2021-08-12/10/FlumeData.1628746760578
```
查找系统所欲目录 , 找到最近10个 tar.gz 文件
如果您想要在整个系统中查找最近10个.tar.gz文件,可以在终端中使用以下命令:
```
sudo find / -name "*.tar.gz" -printf "%T@ %p\n" | sort -n | tail -10 | awk '{$1="";print $0}'
```
该命令将在整个系统中查找所有以.tar.gz结尾的文件,并按照修改时间从新到旧进行排序。然后使用tail命令只显示最后10个结果,即最近的10个.tar.gz文件。最后使用awk命令去掉时间戳,只显示文件路径。请注意,由于该命令需要访问系统中的所有文件,因此需要使用sudo命令以root权限运行。
阅读全文