shell遍历文件夹并提取文件名字
时间: 2023-09-04 18:12:13 浏览: 203
可以使用`ls`命令配合通配符来遍历文件夹并提取文件名字。
例如,如果要提取当前文件夹下所有以`.txt`结尾的文件名字,可以使用以下命令:
```
ls *.txt
```
如果要将文件名字输出到一个文件中,可以使用重定向符号`>`,例如:
```
ls *.txt > file_names.txt
```
这样会将文件名字输出到名为`file_names.txt`的文件中。
相关问题
shell脚本实现遍历某个目录下所有的目录和子目录下的文件和文件夹,筛选出小于10T的文件夹和文件,然后删除筛选结果
可以使用以下脚本实现:
```bash
#!/bin/bash
# 定义函数,递归遍历目录和子目录下的文件和文件夹
function traverse() {
for file in `ls $1`
do
if [ -d "$1/$file" ] # 如果是目录,递归遍历
then
traverse "$1/$file"
else
size=`du -sk "$1/$file" | awk '{print $1}'` # 获取文件大小
if [ $size -lt 10240 ] # 如果小于10T,删除文件
then
rm -rf "$1/$file"
echo "删除文件:$1/$file"
fi
fi
done
}
# 调用函数,传入目录路径
traverse "/path/to/directory"
```
其中,`du -sk` 命令用于获取文件或文件夹的大小(单位为KB),`awk '{print $1}'` 用于提取出大小值(去掉单位)。`-lt` 表示小于,`10240` 表示10T的大小(单位为KB)。`rm -rf` 命令用于删除文件或文件夹。
shell 根据文件日期移动
Shell 是一种脚本语言,可以用来编写一系列命令以实现特定目标。在编写 Shell 脚本时,我们可以利用文件日期来实现文件的移动操作。
在 Shell 中,可以使用 `ls` 命令来列出文件信息,包括文件名和日期。使用 `cut` 命令可以根据指定的分隔符提取出日期信息。然后,可以使用条件语句(如 `if` 语句)来判断文件日期是否符合条件。如果符合条件,可以通过 `mv` 命令将文件移动到目标位置。
以下是一个示例 Shell 脚本,用于根据文件日期移动文件:
```shell
#!/bin/bash
# 源文件夹路径
source_dir="/path/to/source/directory"
# 目标文件夹路径
target_dir="/path/to/target/directory"
# 遍历源文件夹中的文件
for file in $(ls $source_dir); do
# 提取文件的日期信息
file_date=$(ls -l --time-style=+"%Y%m%d" $source_dir/$file | cut -d ' ' -f 6)
# 判断文件日期是否满足条件(示例条件:大于某个日期)
if [ $file_date -gt "20211231" ]; then
# 移动文件到目标文件夹
mv $source_dir/$file $target_dir
fi
done
```
在上面的示例脚本中,我们首先设置源文件夹路径和目标文件夹路径,然后使用一个循环来遍历源文件夹中的文件。对于每个文件,我们使用 `ls` 命令和 `cut` 命令来提取出文件的日期信息。然后,我们使用条件语句来判断文件日期是否符合条件。如果符合条件,我们使用 `mv` 命令将文件移动到目标文件夹。
请注意,上述示例脚本中的条件和路径只是示例,您可以根据实际需求进行修改。另外,为了确保脚本的安全性和可靠性,建议在使用之前进行测试和校验。