假设我有一个无组织的目录,其中有数千个文件,这些文件的名称中带有前缀,例如 abc-tab、abc-vib、h12-123、h12-498.... 如何将具有相同前缀的文件移动到自己的目录中?
我正在考虑使用类似的东西
find . -path '*/support/*abc*' -exec mv "{}" /new/abc\;
Run Code Online (Sandbox Code Playgroud)
但这意味着我必须为每个前缀重新输入命令。
我有这些函数来处理2GB的文本文件.我将它分成6个部分进行同步处理,但它仍然需要4个多小时.
我还能尝试什么使脚本更快?
一些细节:
样本数据:
"111","2018-08-24","01:21","ZZ","AAA","BBB","0","","","ZZ","ZZ111","ZZ110","2018-10-12","07:00","2018-10-12","08:05","2018-10-19","06:30","2018-10-19","09:35","ZZZZ","ZZZZ","A","B","146.00","222.26","76.26","EEE","abc","100.50","45.50","0","E","ESSENTIAL","ESSENTIAL","4","4","7","125","125"
Run Code Online (Sandbox Code Playgroud)
脚本:
read2col()
{
is_one_way=$(echo "$line"| awk -F'","' '{print $7}')
price_outbound=$(echo "$line"| awk -F'","' '{print $30}')
price_exc=$(echo "$line"| awk -F'","' '{print $25}')
tax=$(echo "$line"| awk -F'","' '{print $27}')
price_inc=$(echo "$line"| awk -F'","' '{print $26}')
}
#################################################
#for each line in the csv
mainf()
{
cd $infarepath
while read -r line; do
#read the value of csv fields into variables
read2col
if [[ $is_one_way == 0 ]]; then
if [[ $price_outbound > 0 ]]; …Run Code Online (Sandbox Code Playgroud) 我有一堆像这样的文件:
file123.txt.452
file456.txt.098
file789.txt.078
Run Code Online (Sandbox Code Playgroud)
如何从文件名中删除第二个点和末尾的数字?
我试过用rename但不认为我的正则表达式是正确的:
rename 's/txt.*/txt/' *
Run Code Online (Sandbox Code Playgroud)