AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-247049

Apricot's questions

Martin Hope
Apricot
Asked: 2019-07-07 05:07:20 +0800 CST

将数百万个文件移动到具有特定名称模式的不同目录

  • 10

我在 Linux 机器上有数百万个具有以下命名法的文件:

1559704165_a1ac6f55fef555ee.jpg

前 10 位数字是时间戳,后面的数字_是特定的 id。我想将与特定文件名 id 匹配的所有文件移动到不同的文件夹。

我在带有文件的目录上尝试了这个

find . -maxdepth 1 -type f | ??????????_a1ac*.jpg |xargs mv -t "/home/ubuntu/ntest"

但是我收到一条错误消息:

bash 1559704165_a1ac6f55fef555ee.jpg: command not found

当我尝试时,mv ??????????_a1ac*.jpg 我得到参数列表太长的错误。我至少有 15 种不同的文件名模式。我该如何移动它们。

file-copy
  • 5 个回答
  • 2277 Views
Martin Hope
Apricot
Asked: 2019-06-12 04:13:10 +0800 CST

按特定顺序处理文件

  • 0

我在一个文件夹中有 40k 张图像。文件名遵循以下模式:

1558058263_18ea873ddcf8c65e.jpg
1558408930_63c29ce4462ec194.jpg 
1558062887_18ea873ddcf8c65e.jpg

在此文件名的第一部分是时间戳,第二部分是生成图像的机器 ID。

我想仅根据时间戳按顺序处理这些文件中的每一个。如何按顺序获取文件进行处理。我正在使用 python3 来选择文件。当前代码如下:

 for root, dirs, files in os.walk(path):
                for name in files:
                        img=fr.load_image_file('/home/ubuntu/faces/' + name)
filenames python
  • 4 个回答
  • 1264 Views
Martin Hope
Apricot
Asked: 2019-04-30 20:56:49 +0800 CST

根据文件中的部分名称复制文件

  • 0

我在一个文件夹中有数百万个 xml 文件。文件的名称遵循特定的模式:

ABC_20190101011030931_6049414.xml

在这我只对 xml 之前的最后一组数字感兴趣6049414。我在一个文本文件中有一个大约 8000 个这样的数字的列表。文本文件中的详细信息如下 - 一行中的数字:

104638
222885
108880071

我正在使用以下代码从与文本文件中给出的数字匹配的文件夹中移动文件:

#folder where the xml files are stored  
cd /home/iris/filesToExtract  
SECONDS=0

#This line reads each number in the hdpvr.txt file and if a match is found moves that file to another folder called xmlfiles.  
nn=($(cat /home/iris/hdpvr.txt));for x in "${nn[@]}";do ls *.xml| grep "$x"| xargs -I '{}' cp {} /home/iris/xmlfiles;done  

#this line deletes all the other xml files from filesToExtract folder
find . -name "*.xml" -delete  
echo $SECONDS

我面临两个问题。1 尽管有匹配项,但某些文件没有移动 2. 即使在文件名的中间部分找到匹配项,例如

from this ABC_20190101011030931_6049414.xml -> this 20190101011030931  

如果找到匹配项,它仍然会移动....如何获得精确匹配项并移动文件。

bash file-copy
  • 2 个回答
  • 2138 Views
Martin Hope
Apricot
Asked: 2018-06-27 22:21:50 +0800 CST

awk 在 CSV 文件的特定列中搜索和替换字符串

  • 5

我有一个包含 17 列和百万行的 csv 文件。我想在第 16 列中搜索特定字符串,并将该字符串的所有实例替换为另一个字符串。由于我的程序的其余部分使用 bash 脚本,我想使用 awk 而不是 Python 搜索和替换。我目前的操作系统是 Rhel6。

以下是我的数据的示例输出:

SUBSCRIBER_ID|ACCOUNT_CATEGORY|ACCOUNT_ACTIVATION_DATE|PACKAGE_NAME|PACKAGE_TYPE|DURATION|ACTIVE_DATE|INACTIVE_DATE|STB_NO|PRIMARY_SECONDARY|MODEL_TYPE|VC_NO|MULTIROOM|STB_TYPE|IPKG|SERVICE_STATE|CURRENT_STATUS
1001098068|ResidentialRegular|01/20/2007|Annual package 199 May17 pack|Basic Package|Annual|08/28/2017||027445053518|Primary|Pace - 31|000223871682|Yes|AMP|Package 199 pack|Market1|Active
1001098068|ResidentialRegular|01/20/2007|Annual Pack|Premium Package|Annual|08/28/2017||027445053518|Primary|Pace - 31|000223871682|Yes|AMP|English Movies pack|Market1|Active
1001098068|ResidentialRegular|01/20/2007|Annual SingleUnit Jun17 Pack|Secondary Pack|Annual|08/28/2017||032089364015|Secondary|Kaon|000017213968|Yes|AMP|SingleUnit|Market2|Active

在这第 16 列是市场,我想将其中的 更改Market1为MarketPrime。文件名是marketinfo_2018-06-26.csv

我尝试了以下代码:

awk -F '| +' '{gsub("Market1","MarketPrime",$16); print}' OFS="|" marketinfo_2018-06-26.csv > marketinfo_2018-06-26.csv

这运行没有任何输出,但字符串Market1仍然存在。

awk text-processing
  • 4 个回答
  • 21478 Views
Martin Hope
Apricot
Asked: 2018-05-12 02:08:58 +0800 CST

lvextend 在 RHEL 6 中扩展 root

  • 0

我有一个处理数据的服务器,它开始给我这个错误:

write error: no space left on device
cannot create temp file for here-document: no space left on device

虽然我使用 ubuntu 14.04 作为我的主要操作系统,但管理文件系统超出了我的理解范围,因此提出了这个问题。

df -h 

印刷

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       99G   94G   16M 100% /
/dev/sda2             477M   39M  413M   9% /boot
/dev/sda1             200M  264K  200M   1% /boot/efi
/dev/mapper/VolGroup-lv_home
                      1.5T  453G  996G  32% /home
shmfs                  30G     0   30G   0% /dev/shm
shmfs                  30G     0   30G   0% /dev/shm
shmfs                  30G     0   30G   0% /dev/shm

显然我的 lv_root 上没有太多空间了。我跑了

df -i

Filesystem              Inodes  IUsed     IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root
                       6553600 143617   6409983    3% /
/dev/sda2               128016     22    127994    1% /boot
/dev/sda1                    0      0         0     - /boot/efi
/dev/mapper/VolGroup-lv_home
                     101588992  44952 101544040    1% /home
shmfs                  4085528      1   4085527    1% /dev/shm
shmfs                  4085528      1   4085527    1% /dev/shm
shmfs                  4085528      1   4085527    1% /dev/shm

这表明我还有很多可用空间(不确定我的理解是否正确)。

我尝试从中删除文件,/var/log但由于这些文件的大小并不大,所以没有发生任何事情。我阅读lvextend并认为我可以增加lv_rootVolGroup 的大小。

sudo lvs --segments

给我

LV      VG       Attr       #Str Type   SSize  
  lv_home VolGroup -wi-ao----    1 linear   1.36t
  lv_home VolGroup -wi-ao----    1 linear 157.78g
  lv_root VolGroup -wi-ao----    1 linear 100.00g
  lv_swap VolGroup -wi-ao----    1 linear  20.00g

sudo vgdisplay VolGroup

给我

 VG Name               VolGroup
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.63 TiB
  PE Size               4.00 MiB
  Total PE              427545
  Alloc PE / Size       427545 / 1.63 TiB
  Free  PE / Size       0 / 0   

在知道我所有的分区共享相同的卷组名称VolGroup 并且 VG 大小为 1.63 TiB 后,我尝试将lv_root空间增加 400Gib

sudo lvextend -L +400G /dev/mapper/VolGroup-lv_root

但收到此错误消息

Insufficient free space: 102400 extents needed, but only 0 available

40G需要不同范围的相同消息。

服务器的操作系统是 RHEL 6,我正在处理输入到 Oracle DB 的数据。

rhel lvm
  • 1 个回答
  • 828 Views
Martin Hope
Apricot
Asked: 2017-12-15 00:41:16 +0800 CST

每次在最后结束的地方开始 for 循环

  • 1

我在一个目录上有大约 100 万张图片。这些文件从 1 到 n 编号。我正在使用 for 循环遍历每个图像。由于每次迭代都由个人检查,因此一天只能完成一定数量的迭代。当我第二天再次开始循环时,循环显然又从第一个文件开始了。

我将通过循环迭代的文件保存在一个文本文件中,并在每次循环开始之前读取文本文件的最后一行。我正在尝试使用最后读取的文件作为 for 循环的开始。

以下是到目前为止完成的代码:

query=/ImageFolder/*.jpg
fil=$( tail -n 1 readfiles.txt )

for f in $query
    do
      python ~/runprog.py --query $f
    done

我不确定如何使用 $fil 作为我在 for 循环中的起点,并从那里开始迭代后续文件。

bash for
  • 1 个回答
  • 128 Views
Martin Hope
Apricot
Asked: 2017-12-06 22:35:17 +0800 CST

while 循环检查用户输入不在 for 循环中

  • 0

我正在列出文件夹中的文件并从用户那里获取输入以选择其中一个文件。

files=$(ls ~/VideoExtract/*.avi)
i=1
for j in $files
do
echo "$i.$j"
file[i]=$j
i=$(( i + 1 ))
done
echo ""
echo ""
read -p "Enter the serial number from the above list : " input
clear

假设如果我有 3 个文件,上面的代码列出了序列号为 1、2、3 的所有三个文件。我想验证用户是否提供了正确的输入,并且在收到正确的输入之前不会破坏代码。为此,我在上面的代码之后使用了一个while循环

while [[ "$input" =~ ["$i"] ]]
do
echo "Please provide a serial number from the list given below."
files=$(ls ~/VideoExtract/*.avi)
i=1
for j in $files
do
echo "$i.$j"
file[i]=$j
i=$(( i + 1 ))
done
read -p "Enter the serial number from the above list : " input
done

这确实会再次返回文件列表。问题是,如果我有 3 个文件,并且如果我键入 4,则循环继续工作,但如果我提供 5,则循环中断并移至代码的下一行。我不确定问题是否符合要求

while [[ "$input" =~ ["$i"] ]] 

或者

i=$(( i + 1 ))

而不是=~我尝试使用!=and! $input == $i和类似的其他组合,例如 $i 使用和不使用 []。似乎没有任何工作。

如何运行 while 循环,直到用户提供 $i 范围内的有效输入。

shell-script for
  • 1 个回答
  • 545 Views
Martin Hope
Apricot
Asked: 2017-12-05 00:20:14 +0800 CST

如何 mv .bin bin

  • 13

我在我的 Ubuntu 机器上隐藏了一些文件夹。错误地,我也通过使用隐藏了 bin 文件夹

cd /
mv bin .bin

现在我可以 cd 到 .bin,但我无法取消隐藏 bin 目录。有人可以帮忙吗?我正在尝试以下命令:

mv .bin bin

我收到以下错误

bash: /bin/mv: No such file or directory

我试图以 root 身份登录,但我的机器要求我安装登录。在进行 apt-get install login 时,我收到一条消息 login 当前是最新版本。

linux mv
  • 1 个回答
  • 2849 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve