gpt4 book ai didi

linux - 读取多个文件导致连续文件接收到 "Permission denied"

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:13 24 4
gpt4 key购买 nike

当使用串联语法将文件列表输入程序时,第一个文件似乎没有出错,但第一个文件之后的其余文件出现错误“权限被拒绝”。第一个文件是什么并不重要,我可以将列表的最后一个文件设置为第一个输入并且它被接受但之后的所有内容都会出现“权限被拒绝”错误。

有什么想法吗?

我已检查文件夹权限并将此文件夹的 chmod 设置为 755,但问题仍然存在。

RAW_DIR=/gpfs/ts0/projects/Research/sequencing/H0243/01_raw_reads/
FILES=`ls -m ${RAW_DIR}3013_12_r1.fq.gz|${RAW_DIR}3013_12_r2.fq.gz|${RAW_DIR}3013_14_r1.fq.gz|${RAW_DIR}3013_14_r2.fq.gz|${RAW_DIR}3013_15_r1.fq.gz|${RAW_DIR}3013_15_r2.fq.gz|${RAW_DIR}3013_16_r1.fq.gz|${RAW_DIR}3013_16_r2.fq.gz|${RAW_DIR}3013_31_r1.fq.gz|${RAW_DIR}3013_31_r2.fq.gz|${RAW_DIR}3013_33_r1.fq.gz|${RAW_DIR}3013_33_r2.fq.gz|${RAW_DIR}3013_34_r1.fq.gz|${RAW_DIR}3013_34_r2.fq.gz|${RAW_DIR}3013_36_r1.fq.gz|${RAW_DIR}3013_36_r2.fq.gz|${RAW_DIR}3013_mCh1_r1.fq.gz|${RAW_DIR}3013_mCh1_r2.fq.gz|${RAW_DIR}3013_mCh2_r1.fq.gz|${RAW_DIR}3013_mCh2_r2.fq.gz|${RAW_DIR}3013_mCh3_r1.fq.gz|${RAW_DIR}3013_mCh3_r2.fq.gz|${RAW_DIR}3013_mCh4_r1.fq.gz|${RAW_DIR}3013_mCh4_r2.fq.gz|${RAW_DIR}3013_nc1_r1.fq.gz|${RAW_DIR}3013_nc1_r2.fq.gz| sed 's/ //g'`

我希望文件能够一个接一个地成功读入,但目前所有文件在第一次成功读入后都出现“权限被拒绝”错误。

最佳答案

因为你在命令中使用管道符

ls -m ${RAW_DIR}3013_12_r1.fq.gz|${RAW_DIR}3013_12_r2.fq.gz|${RAW_DIR}3013_14_r1.fq.gz ...

您只需将第一个文件名作为参数传递给 ls -m 并创建一个管道。这意味着 shell 会将一个程序的输出连接到下一个程序的输入。shell 将尝试将 ${RAW_DIR}3013_12_r2.fq.gz${RAW_DIR}3013_14_r1.fq.gz 等作为程序执行。

很可能这些文件不可执行,这就是您收到错误消息的原因。 (该文件没有执行权限。)很可能这不是您想要的。

如果要为程序指定多个参数(文件名),请用空格分隔参数。

也许你想要这样的东西

FILES=`ls -m ${RAW_DIR}3013_12_r1.fq.gz ${RAW_DIR}3013_12_r2.fq.gz ${RAW_DIR}3013_14_r1.fq.gz ${RAW_DIR}3013_14_r2.fq.gz ${RAW_DIR}3013_15_r1.fq.gz ${RAW_DIR}3013_15_r2.fq.gz ${RAW_DIR}3013_16_r1.fq.gz ${RAW_DIR}3013_16_r2.fq.gz ${RAW_DIR}3013_31_r1.fq.gz ${RAW_DIR}3013_31_r2.fq.gz ${RAW_DIR}3013_33_r1.fq.gz ${RAW_DIR}3013_33_r2.fq.gz ${RAW_DIR}3013_34_r1.fq.gz ${RAW_DIR}3013_34_r2.fq.gz ${RAW_DIR}3013_36_r1.fq.gz ${RAW_DIR}3013_36_r2.fq.gz ${RAW_DIR}3013_mCh1_r1.fq.gz ${RAW_DIR}3013_mCh1_r2.fq.gz ${RAW_DIR}3013_mCh2_r1.fq.gz ${RAW_DIR}3013_mCh2_r2.fq.gz ${RAW_DIR}3013_mCh3_r1.fq.gz ${RAW_DIR}3013_mCh3_r2.fq.gz ${RAW_DIR}3013_mCh4_r1.fq.gz ${RAW_DIR}3013_mCh4_r2.fq.gz ${RAW_DIR}3013_nc1_r1.fq.gz ${RAW_DIR}3013_nc1_r2.fq.gz| sed 's/ //g'`

如果你想要${RAW_DIR}中的所有文件名,你可以使用

FILES=$(ls -m ${RAW_DIR}*| sed 's/ //g')

或者如果你想更具体一些

FILES=$(ls -m ${RAW_DIR}*.fq.gz| sed 's/ //g')

关于linux - 读取多个文件导致连续文件接收到 "Permission denied",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58339401/

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