从另一个文件夹linux shell中删除一个文件夹中的文件

时间:2014-01-24 16:26:36

标签: linux shell ubuntu command-line

我有两个目录。 DirA包含DirB中的所有文件。 我想从DirB中移除DirA中的所有文件。 如何在linux命令行中执行此操作?

我正在使用ubuntu。

由于

3 个答案:

答案 0 :(得分:6)

cd DirB
for i in *
do
    rm DirA/"$i"
done

修改:在$i周围使用双引号来处理包含空格的文件名。

答案 1 :(得分:1)

你可以为我做这个循环:

for f i DirB/*; do
    fn="${f##*/}"
    [[ -f "$fn" ]] && rm -f "DirA/$fn"
done

答案 2 :(得分:1)

这里有一个带执行输出的例子,如果文件名包含空格(顺便说一句我不推荐的不舒服的东西),它也会起作用:

root@folgore:/tmp/test# tree
.
├── DirA
│   ├── a
│   ├── b
│   ├── c
│   └── d
└── DirB
    ├── a
    ├── b
    ├── e
    ├── g
    ├── h
    └── r

2 directories, 10 files
root@folgore:/tmp/test# for f in `ls DirB/* | sed 's/ /_SPC_/g'`;do fa=`echo $f | sed 's/_SPC_/ /g;s/^DirB\//DirA\//'`;echo "removing $fa if exists";rm -f "$fa";done
removing DirA/a if exists
removing DirA/b if exists
removing DirA/e if exists
removing DirA/g if exists
removing DirA/h if exists
removing DirA/r if exists
root@folgore:/tmp/test# tree
.
├── DirA
│   ├── c
│   └── d
└── DirB
    ├── a
    ├── b
    ├── e
    ├── g
    ├── h
    └── r

2 directories, 8 files