有人可以提供代码来执行以下操作:假设有一个文件目录,所有这些都需要通过程序运行.程序将结果输出到标准输出.我需要一个脚本进入目录,在每个文件上执行命令,并将输出连接成一个大输出文件.
例如,要在1个文件上运行该命令:
$ cmd [option] [filename] > results.out
Run Code Online (Sandbox Code Playgroud) Bash如何重命名一系列包以删除其版本号?我一直在玩弄周围既expr和%%,都无济于事.
例子:
Xft2-2.1.13.pkg 变 Xft2.pkg
jasper-1.900.1.pkg 变 jasper.pkg
xorg-libXrandr-1.2.3.pkg 变 xorg-libXrandr.pkg
我有两个数组.
array=(
Vietnam
Germany
Argentina
)
array2=(
Asia
Europe
America
)
Run Code Online (Sandbox Code Playgroud)
我想同时循环这两个数组,即在两个数组的第一个元素上调用一个命令,然后在第二个元素上调用相同的命令,依此类推.伪代码:
for c in $(array[*]}
do
echo -e " $c is in ......"
done
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我是shell脚本的新手,我一整天都在努力弄清楚如何执行"for"命令.基本上,我想要做的是以下内容:
我有一个list.txt文件,其中包含一堆名称:
name1
name2
name3
Run Code Online (Sandbox Code Playgroud)
对于列表中的每个名称,有两个不同的文件,每个文件的名称结尾不同.例如:
name1_R1
name1_R2
Run Code Online (Sandbox Code Playgroud)
我试图运行的程序被调用sickle.基本上,它需要两个文件(彼此对应)并对它们进行分析,因此需要我有这个命名方案.镰刀命令如下:
sickle pe -f input_file1.fastq -r input_file2.fastq -t sanger \
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助我,至少只是告诉我如何让unix读取文件列表并独立处理每一行,我想我可以从那里开始.我尝试了一些东西,但没有一个能奏效.
我有一个file_in.txt包含以下名称的文件 ( ):
aphid_splitseq.1.fasta.annot.xml
aphid_splitseq.2.fasta.annot.xml
aphid_splitseq.3.fasta.annot.xml
aphid_splitseq.4.fasta.annot.xml
aphid_splitseq.5.fasta.annot.xml
Run Code Online (Sandbox Code Playgroud)
我还有另一个文件 ( file_out.txt) 具有以下名称:
aphid_splitseq_1
aphid_splitseq_2
aphid_splitseq_3
aphid_splitseq_4
aphid_splitseq_5
Run Code Online (Sandbox Code Playgroud)
现在我想要这样的陈述
java -cp *:ext/*: es.blast2go.prog.B2GAnnotPipe -in aphid_splitseq.1.fasta.annot.xml -out results/aphid_splitseq_1 -prop b2gPipe.properties -v -annot -dat
Run Code Online (Sandbox Code Playgroud)
基本上,我要循环通过每个的file_in.txt和file_out.txt并取代的值-in和-out用i和j分别。
我在 Bash 中尝试过,但它似乎不起作用:
aphid_splitseq.1.fasta.annot.xml
aphid_splitseq.2.fasta.annot.xml
aphid_splitseq.3.fasta.annot.xml
aphid_splitseq.4.fasta.annot.xml
aphid_splitseq.5.fasta.annot.xml
Run Code Online (Sandbox Code Playgroud) 如果我将其发布在错误的位置,我提前道歉,我对脚本编写非常陌生,更不用说 stackoverflow 了:
我有许多文件.conf与许多同名但不带.conf扩展名的文件夹位于同一目录中。例如,我的目录如下所示:
136
136.conf
139
139.conf
...
Run Code Online (Sandbox Code Playgroud)
我想.conf用循环将文件移动到相应的文件夹中。我想我可以这样做:
for f in *.conf; do
dir=${f:0:13}
mv "$f" "$dir"
done
Run Code Online (Sandbox Code Playgroud)
但我显然做错了什么。我将非常感谢任何人对此的帮助。
我想迭代 bash 中的成对元素。在 Python 中,这很简单:
x_list = [1, 2, 3, 4]
y_list = ["a", "b", "c", "d"]
for x, y in zip(x_list , y_list):
# here we have access to the values (i.e. the pairs are assigned to variables):
result = do_something(x, y)
print(result)
Run Code Online (Sandbox Code Playgroud)
我如何在 bash 中复制这种行为?我需要将这些对的值存储到 for 循环内部的变量中,以便我可以执行一些操作。它应该是这样的:
for x, y in 1a 2b 3c 4d
do
python script.py --x_value=${x} --y_value=${y}
done
Run Code Online (Sandbox Code Playgroud)
请注意,列表的元素也可能是复杂的东西,例如:
x_list = [1e-5, 1e-4, 1e-3]和y_list = [10, 20, 30]
使用 Kubator 命令行回答我的问题:
#Function that shows the files having the same content in the current directory
showDuplicates (){
last_file=''
while read -r f1_hash f1_name; do
if [ "$last_file" != "$f1_hash" ]; then
echo "The following files have the exact same content :"
echo "$f1_name"
while read -r f2_hash f2_name; do
if [ "$f1_hash" == "$f2_hash" ] && [ "$f1_name" != "$f2_name" ]; then
echo "$f2_name"
fi
done < <(find ./ -maxdepth 1 -type f -print0 | xargs -0 md5sum | …Run Code Online (Sandbox Code Playgroud)