我有两个目录。
DirA
包含DirB
中的所有文件。
我想从DirB
中移除DirA
中的所有文件。
如何在linux命令行中执行此操作?
我正在使用ubuntu。
由于
答案 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