我正在努力学习一点awk foo.我有一个CSV,其中每一行的格式为partial_file_name,file_path.我的目标是找到文件(基于部分名称)并将它们移动到各自的新路径.我想结合find,awk和mv的力量来实现这个目标但是我坚持实施.我想使用awk将术语与csv文件分开,以便我可以执行类似于
find . -name '*$1*' -print | xargs mv {} $2{}
$ 1和$ 2是csv文件中的拆分术语的操作.有人有主意吗?
-和平
我觉得你在这里搞得很混乱.{}只能用于查找,只能用于一次.即你不能做类似的事情find -name '*.jpg' -exec mv {} {}.png.
做这个:
$ cat korv
foo.txt,/hello/
bar.jpg,/mullo/
$ awk -F, '{print $1 " " $2}' korv
foo.txt /hello/
bar.jpg /mullo/
Run Code Online (Sandbox Code Playgroud)
-F设置分隔符,因此上面将使用","分割.接下来,将*添加到文件名:
$ awk -F, '{print "*"$1"*" " " $2}' korv
*foo.txt* /hello/
*bar.jpg* /mullo/
**
Run Code Online (Sandbox Code Playgroud)
这表明我有一条空行.我们不希望这个匹配,所以我们添加一个规则:
$ awk -F, '/[a-z]/{print "*"$1"*" " " $2}' korv
*foo.txt* /hello/
*bar.jpg* /mullo/
Run Code Online (Sandbox Code Playgroud)
看起来不错,所以使用子shell将所有这些封装到mv:
$ mv $(awk -F, '/[a-z]/{print "*"$1"*" " " $2}' korv)
$
Run Code Online (Sandbox Code Playgroud)
完成.
| 归档时间: |
|
| 查看次数: |
18412 次 |
| 最近记录: |