Linux 从列表/变量中删除项-Bash
如果我调用变量作为文件列表: 文件=$(ls*.txt) 然后我想删除列表中的第一项(文件) 谢谢Linux 从列表/变量中删除项-Bash,linux,bash,Linux,Bash,如果我调用变量作为文件列表: 文件=$(ls*.txt) 然后我想删除列表中的第一项(文件) 谢谢 Clive您不应该解析ls的输出;看 幸运的是,在您的情况下,您实际上没有使用ls的任何功能;Bash已经处理了*.txt部分,因此ls是非常冗余的 你可以这样写: # Set files to an array of the files with names ending in '*.txt': files=(*.txt) # Set files to an array consisting
Clive您不应该解析
ls
的输出;看
幸运的是,在您的情况下,您实际上没有使用ls
的任何功能;Bash已经处理了*.txt
部分,因此ls
是非常冗余的
你可以这样写:
# Set files to an array of the files with names ending in '*.txt':
files=(*.txt)
# Set files to an array consisting of ${files[1]}, ${files[2]}, ...:
files=("${files[@]:1}")
(请参阅;搜索
${parameter:offset}
)请参阅:和一些其他有用的提示。。。。[[1.要删除最后一个:rm${files[@]:(-1)}
][[2.要删除一个范围rm${files[@]:1:3}
]],请注意后者会删除第二个、第三个和第四个匹配项。同样对于非常旧的BASH版本,调用数组最后一个元素的-1
也不起作用files=(*.txt)'在我发出'echo$files'时,只给我一个文件'1stFile.txt'。然后,当我发出“rm”${files[0]}”然后发出“echo$files”时,剩下的是同一个文件。我很困惑。事实上,“files=(*.txt)”在我发出“echo$files”时会留下“*.txt”。上面是我发出'files=$(ls*.txt)时发生的情况。它不工作。哇,实际发生的是我通过发出这些命令删除了我的文件-WTF@用户3329732:Eep,对不起。这就是rm
(“remove”)命令所做的,也是我认为您想要做的。(我不是100%确定,这就是为什么我在代码注释中提到它会删除文件,但如果不是您的意思,那么考虑到数据丢失的风险,我真的应该更明确地说明我的不确定性。对不起。:-/)