你能帮我看看如何编写shell脚本吗
我有以下文件集
文件夹路径: abc/xyz
abc122.1001.csv
abc122.1002.csv
abc122.1003.csv
我想在文件夹位置搜索abc122。*文件,并将所有文件移到另一个位置,但序列号最小的文件除外(1001,1002 ...)
例如:abc122.1001.csv是最低的序列文件,所有其他带有abc122 *的文件都必须移动到另一个位置。
我已尝试过以下命令,但它无法正常工作
find /abc/xyz -name 'abc122*' |sort -r | tail -n1 | mv {} u05/BACKUP/OLD
答案 0 :(得分:1)
这可以作为一个起点:
move_all_but_one.sh
#!/bin/bash
shift
if [ $# -gt 0 ]; then
mv $@ u05/BACKUP/OLD/
fi
比跑吧:
./move_all_but_one.sh abc122*
但仍然不是最终解决方案,因为它可能会因很长的文件列表而崩溃(参数列表太长)。
答案 1 :(得分:0)
语法{}
适用于find
的exec命令,不适用于mv
,也不适用于shell。
用
| mv ...
| while read f; do mv "$f" u05/BACKUP/OLD; done
应该有所帮助,不是吗?
| sort -r | tail -n 1
可以替换为| sort | tail -n +2