gpt4 book ai didi

linux - 如何从提到的列表中获取文件名

转载 作者:太空宇宙 更新时间:2023-11-04 06:00:57 26 4
gpt4 key购买 nike

我是 Linux 和/或脚本新手,所以请耐心等待。我想要一个可以获取 Linux 目录文件的脚本。这是我尝试获取文件名的方法。

for NAME in $(ls -1 *.wav /some/path | cut -d "/" -f3 | cut -d "-" -f1-5)

如果文件名包含-IN或-OUT,那么它们将是sox -m,然后mv到另一个目录,但如果是其他一些文件,那么它将只是mv

供引用,文件名类似于

1030-04-06-2015-1433414216.wav
1030-04-06-2015-1433414318.wav
1030-04-06-2015-1433414440.wav
1043-21-05-2015-1432207256.wav
1043-21-05-2015-1432207457.wav
1046-20-05-2015-1432137944.wav
1046-20-05-2015-1432138015.wav
1046-20-05-2015-1432138704.wav
1431709157.93900.0-in.wav
1431709157.93900.0-out.wav
1431709157.93900.1-in.wav
1431709157.93900.1-out.wav
1431710008.94059.0-in.wav
1431710008.94059.0-out.wav
1431710008.94059.1-in.wav
1431710008.94059.1-out.wav
1431710008.94059.1.wav
1431710008.94059.2.wav
1431713190.94698.2-in.wav
1431713190.94698.2-out.wav
1431713190.94698.2.wav
1431721107.96010.0-in.wav
1431721107.96010.0-out.wav
1431721107.96010.1.wav

最佳答案

这应该有效:

#!/bin/bash
regex='(.*)(-out|-in)(.txt)'
for file in *.txt;do
# $file is the full path to the file
if [[ $file =~ $regex ]];then
#filename in this block contains -in or -out
filename="${file##*\/}"
inorout="${BASH_REMATCH[2]}"
extension="${BASH_REMATCH[3]}"
filenamewithoutextension="${filename%.*}"
filenamewithoutioroutorextension="${filenamewithoutextension/%$inorout/}"
filenamewithoutiorout="${filenamewithoutioroutorextension}$extension"
echo "$filename" "$inorout" "$extension" "$filenamewithoutextension" "$filenamewithoutiorout" "$filenamewithoutioroutorextension"
#do something here sox-m mv or whatever
else
#filename in this block doesn't contain -in or -out
echo "do something else"
fi
done

<小时/>说明:

"${file##*\/}" 是从 $file 中剪切 */ 留下的字符串,即基本名(文件名)。

"${BASH_REMATCH[2]}"[[ $file =~ $regex ]] 完成的模式匹配中捕获的第二个组,即 -in-out

"${BASH_REMATCH[3]}" 是第三个捕获的组,即 .wav

"${filename%.*}" 是从 $file 中剪切 .* 留下的字符串,即不带 .wav 的文件名

<小时/>您应该检查的资源:

  1. Bash Parameter Expansion
  2. Pattern Matching
  3. Bash Variables

关于linux - 如何从提到的列表中获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30893126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com