小编use*_*312的帖子

Linux 查找具有相似名称的文件并移动到新目录

假设我有一个无组织的目录,其中有数千个文件,这些文件的名称中带有前缀,例如 abc-tab、abc-vib、h12-123、h12-498.... 如何将具有相同前缀的文件移动到自己的目录中?

我正在考虑使用类似的东西

find . -path '*/support/*abc*' -exec mv "{}" /new/abc\;
Run Code Online (Sandbox Code Playgroud)

但这意味着我必须为每个前缀重新输入命令。

linux bash shell

4
推荐指数
1
解决办法
4696
查看次数

优化大文件的awk命令

我有这些函数来处理2GB的文本文件.我将它分成6个部分进行同步处理,但它仍然需要4个多小时.

我还能尝试什么使脚本更快?

一些细节:

  1. 我将输入csv输入到while循环中以逐行读取.
  2. 我从read2col函数中的4个字段中获取了csv行的值
  3. 我的mainf函数中的awk从read2col获取值并进行一些算术运算.我将结果四舍五入到小数点后两位.然后,将该行打印到文本文件.

样本数据:

"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)

linux bash awk

3
推荐指数
1
解决办法
450
查看次数

删除部分文件名

我有一堆像这样的文件:

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)

regex linux bash redhat file-rename

2
推荐指数
1
解决办法
89
查看次数

标签 统计

bash ×3

linux ×3

awk ×1

file-rename ×1

redhat ×1

regex ×1

shell ×1