mv:无法统计错误:无此类文件或目录错误

问题描述 投票:3回答:4

我需要将目录中的文件移动到另一个目录。使用以下程序时,我收到stat错误。

for i in dir1/*.txt_dir; do
mv $i/*.txt  dir2/`basename $i`.txt
done

错误消息

mv: cannot stat `dir1/aa7.txt_dir/*.txt': No such file or directory
linux bash stat
4个回答
6
投票

通常,当扩展一个不匹配任何文件名的glob时,它保持不变。因此,您将获得如下结果:

$ rm 。bakrm:无法删除`。bak':无此类文件或目录

为避免这种情况,我们需要更改nullglob变量的默认值。

    #BASH

    shopt -s nullglob

    for i in dir1/*.txt_dir; do
       mv $i/*.txt  dir2/'basename $i'.txt
    done

在此处了解更多信息:http://mywiki.wooledge.org/NullGlob

希望这会有所帮助!


3
投票
mv $i/*.txt  dir2/`basename $i`.txt

$i/中没有文本文件时,此功能不起作用。外壳程序将原始字符串"$i/*.txt"传递到mv,其中包含未扩展的*mv被阻塞。

尝试这样的事情:

for i in dir1/*.txt_dir; do
    find $i -name '*.txt' -exec mv {} dir2/`basename $i`.txt \;
done

0
投票

当单独放置目录/ *进行迭代时,它将列出每个文件的绝对路径。使用`ls

对于ls dir1/*.txt_dir中的i;做


-1
投票

尽管在您的示例中未显示-使用正确的引号很重要。在BASH中,“ *”计算为*,“ *”计算为扩展球。所以

`ls *`

将显示目录中的所有文件和

`ls "*"`

将显示所有名为文字的文件*

© www.soinside.com 2019 - 2024. All rights reserved.