Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 读取多个文件会导致连续的文件接收;“拒绝许可”;_Linux_Shell_Unix - Fatal编程技术网

Linux 读取多个文件会导致连续的文件接收;“拒绝许可”;

Linux 读取多个文件会导致连续的文件接收;“拒绝许可”;,linux,shell,unix,Linux,Shell,Unix,当使用连接语法将文件列表输入到程序中时,第一个文件似乎没有出错,但第一个文件之后的其余文件会出现错误“权限被拒绝”。不管第一个文件是什么,我可以将列表的最后一个文件设置为第一个输入,它会被接受,但之后的所有操作都会出现“权限被拒绝”错误 有什么想法吗 我已检查文件夹权限并将此文件夹的chmod设置为755,但问题仍然存在 RAW_DIR=/gpfs/ts0/projects/Research/sequencing/H0243/01_raw_reads/ FILES=`ls -m ${RAW_DI

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

有什么想法吗

我已检查文件夹权限并将此文件夹的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\u DIR}3013\u 12\u r2.fq.gz
${RAW\u DIR}3013\u 14\u 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\u DIR}
中,可以使用

FILES=$(ls -m ${RAW_DIR}*| sed 's/ //g')
或者如果你想更具体一些

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

你试过sudo特权吗??可能与
chown
命令有关?请回答您的问题并告诉我们更多详细信息。不清楚“将文件列表输入程序”是什么意思。变量
文件中的预期结果是什么?为什么要使用手动创建的文件列表?这是
${RAW\u DIR}
中所有文件的列表吗?是的,我想输入来自${RAW\u DIR}的所有文件,我不是试图执行它们,而是将它们输入到一个单独的程序中。@YaseenAhammed你没有回答我的问题
文件
中的结果应该是什么样子。您希望如何处理该变量?是否需要所有文件名都用
而不是空格分隔?请将所有信息添加到您的原始问题中,而不是写评论。谢谢您这样做有意义!!