标签: for

bash FOR IN 循环以什么顺序拾取文件夹中的文件?

假设我有一个 for in 循环:

for i in /apps/textfiles/*.txt
do
do something
done
Run Code Online (Sandbox Code Playgroud)

现在说我在/apps/textfiles/ 中有 50 个文件

将按什么顺序选取文件?

shell wildcards for

8
推荐指数
1
解决办法
4497
查看次数

Bash:后台有多个 for 循环

这是在后台启动多个顺序处理的正确方法吗?

for i in {1..10}; do
    for j in {1..10}; do
        run_command $i $j;
    done &
done;
Run Code Online (Sandbox Code Playgroud)

所有j后应相互给予处理i,但都i应该被同时处理。

bash background-process for parallelism

8
推荐指数
1
解决办法
1683
查看次数

将 `for file in` 转换为 `find`,以便我的脚本可以递归应用

我有一个想法,即运行 bash 脚本来检查某些条件并使用ffmpeg将我目录中的所有视频从任何格式转换为.mkv它,它运行良好!

问题是,我不知道for file in循环不能递归地工作(/sf/ask/324721211/

但我几乎不理解“管道”,我期待看到一个例子并清除一些不确定性。

我想到了这个场景,我认为这对我的理解有很大帮助。

假设我有这个 bash 脚本片段:

for file in *.mkv *avi *mp4 *flv *ogg *mov; do
target="${file%.*}.mkv"
    ffmpeg -i "$file" "$target" && rm -rf "$file"
done
Run Code Online (Sandbox Code Playgroud)

它的作用是,对于当前目录,搜索任何*.mkv *avi *mp4 *flv *ogg *mov然后声明输出具有其扩展名,.mkv然后删除原始文件,然后输出应保存到原始视频所在的同一文件夹中。

  1. 如何将其转换为递归运行?如果我使用find,在哪里声明变量$file?你应该在哪里申报$target?都是find真的单行吗?我真的需要将文件传递给一个变量$file,因为我仍然需要运行条件检查。

  2. 并且,假设(1)成功,如何确保满足“然后输出应保存到原始视频所在的同一文件夹”的要求?

debian find shell-script recursive for

7
推荐指数
2
解决办法
2397
查看次数

for循环中的Shell变量

我很难通过这段man bash话。

                          If the control variable in a for loop has the
nameref attribute, the list of words can be a list of shell  variables,
and  a name reference will be established for each word in the list, in
turn, when the loop is executed.  Array variables cannot be  given  the
-n attribute.  However, nameref variables can reference array variables
and subscripted array variables.
Run Code Online (Sandbox Code Playgroud)

你能给出一个循环中这个 nameref 变量的例子并解释一下吗?

bash for variable

7
推荐指数
1
解决办法
1116
查看次数

for循环在bash中不起作用

我有下面的代码来替换多个文件中的一些字符串,但是 for 循环正在检查第一个文件而不是执行 perl 脚本。下面是我的代码

if [ -f zebu.work.post_opt/ZEBU_CTO_FT_MOD.v ]
then
    for file in $(./zebu.work.post_opt/ZEBU_CTO_FT_MOD*);
    do
    perl -i -p -e 's/input/inout/g' $file; 
        perl -i -p -e 's/output/inout/g' $file;
        perl -i -p -e 's/wire.*\n/tran\(i0,\ o\);/g' $file;
        perl -i -p -e 's/assign.*\n//g' $file;
    done
fi
Run Code Online (Sandbox Code Playgroud)

bash for

7
推荐指数
1
解决办法
383
查看次数

如何在每次循环迭代中将命令的输出分配给不同的变量?

我有一个类似这样的脚本:

for chain in http https ssh
do
 iptables -nvxL $chain | tail -1 | awk '{print $2}'
done
Run Code Online (Sandbox Code Playgroud)

但我实际上想做的是将iptables每次迭代的命令输出捕获到不同的变量中,其名称应该等于 的当前值chain

因此,对于第一次循环迭代(其中$chainhttp),我希望发生这种情况:

http=$(iptables -nvxL http | tail -1 | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)

然后接下来我想要这个:

https=$(iptables -nvxL https | tail -1 | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)

希望您明白这个想法,但不知道如何做到这一点。

bash shell-script for

7
推荐指数
1
解决办法
719
查看次数

随机遍历目录中的文件

如何更改for track in *.mp3; do以便.mp3以随机方式遍历当前目录中的所有文件?

scripting bash directory shell-script for

6
推荐指数
2
解决办法
2636
查看次数

Unix 中的 For 循环:包括来自子目录的文件

Unix 中的一个简单 for 循环是:

for FILE in $BASE_WORK_DIR/*.pdf
   do
     echo $FILE
   done
Run Code Online (Sandbox Code Playgroud)

这将回.pdf显 BASE_WORK_DIR 目录中的所有文件。

如果还BASE_WORK_DIR包含子目录,其中也包含 pdf 文件怎么办。

在这种情况下,我如何设计我的 for 循环来获取所有 pdf 文件BASE_WORK_DIR以及子目录BASE_WORK_DIR

for

6
推荐指数
2
解决办法
2万
查看次数

从 bash for 循环生成的字符串中删除最后一个逗号

我正在处理一种情况,我需要从数组中创建一个逗号分隔的列表到一个 heredoc 并删除最后一个逗号。我正在使用 bashfor管道sed,它正在擦除所有逗号而不是最后一个。一个简化的例子如下:

x=$(for i in a b c; do echo "${i}",; done| sed 's/,$//')
echo $x
a b c
Run Code Online (Sandbox Code Playgroud)

期望的输出:

a, b, c
Run Code Online (Sandbox Code Playgroud)

任何建议表示赞赏。

bash sed here-document for

6
推荐指数
3
解决办法
2万
查看次数

for 循环输入行

我有一个像这样有很多行的文件

/item/pubDate=2014 年 2 月 23 日星期日 00:55:04 +010

如果我执行这个

echo "/item/pubDate=Sun, 23 Feb 2014 00:55:04 +010" | grep -Po "(?<=\=).*"

Sun, 23 Feb 2014 00:55:04 +010
Run Code Online (Sandbox Code Playgroud)

我得到了正确的日期(全部在一行中)。现在我想用 xml 文件中的很多日期来尝试这个。我用这个,没问题。

xml2 < date_list | egrep "pubDate" | grep -Po "(?<=\=).*"
Fri, 22 Jan 2016 17:56:29 +0100
Sun, 13 Dec 2015 18:33:02 +0100
Wed, 18 Nov 2015 15:27:43 +0100
...
Run Code Online (Sandbox Code Playgroud)

但现在我想在 bash 程序中使用日期,我得到了这个输出

for fecha in $(xml2 < podcast | egrep "pubDate" | grep -Po "(?<=\=).*"); do echo $fecha; done
    Fri, …
Run Code Online (Sandbox Code Playgroud)

bash text-processing for

6
推荐指数
1
解决办法
3535
查看次数