sh脚本 搜索文件名称中有.csv的文件。将这些文件截取.csv前的名称并保留.csv
时间: 2023-12-23 17:03:10 浏览: 28
可以使用以下的shell命令来实现:
```
find . -name "*.csv" -type f | sed 's/.*\///; s/\(.*\)\..*/\1.csv/'
```
这个命令会在当前目录及其子目录中查找所有以.csv结尾的文件,并将它们的文件名截取出来,保留.csv后缀。具体的解释如下:
1. `find . -name "*.csv" -type f`:使用find命令查找所有以.csv结尾的文件(不包括目录)。
2. `sed 's/.*\///; s/\(.*\)\..*/\1.csv/'`:使用sed命令对每个找到的文件名进行处理。
- `s/.*\///`:将文件路径去掉,只保留文件名。
- `s/\(.*\)\..*/\1.csv/`:将文件名中除了.csv之外的部分去掉,只保留.csv后缀。
相关问题
sh脚本 搜索文件名称不是以.csv结尾的文件,并切将这些文件删除.csv后面的内容
可以使用`find`和`sed`命令来实现此需求,具体命令如下:
```shell
# 搜索文件名称不是以.csv结尾的文件,并将这些文件删除.csv后的内容
find /path/to/search -type f ! -name '*.csv' -exec sh -c 'echo {} | sed "s/\..*$/./" | xargs -I{} mv {} {}csv' \;
# 删除.csv后的内容
find /path/to/search -type f -name '*.csv' -exec sh -c 'echo {} | sed "s/\.csv$//" | xargs -I{} mv {}.csv {}' \;
```
其中,`/path/to/search`为要搜索的目录路径。第一条命令会搜索所有文件名称不是以`.csv`结尾的文件,并将这些文件的后缀名修改为`.csv`,实现删除`.csv`后的内容。第二条命令则会删除所有`.csv`文件的后缀名,实现删除`.csv`后的内容。
需要注意的是,上述命令会将所有匹配的文件进行修改,因此在执行前应该确保没有误操作的风险。建议先备份相关文件,再执行上述命令。
在python中打开git bash并执行.sh脚本处理csv文件
可以使用以下代码在Python中打开Git Bash并执行.sh脚本来处理CSV文件:
```python
import subprocess
# 打开Git Bash并执行.sh脚本
subprocess.call(["C:/Program Files/Git/bin/bash.exe", "-c", "sh /path/to/your/script.sh"])
# 或者使用绝对路径
subprocess.call(["C:/Program Files/Git/bin/bash.exe", "-c", "sh C:/path/to/your/script.sh"])
```
在脚本.sh中,您可以使用命令行工具例如awk、sed、grep等来处理CSV文件。在脚本中也可以使用Python来处理CSV文件,例如使用pandas库。