Я хочу использовать поиск и удалить все, кроме одной папки, если найден. например
[oracle@SJOAM test]$ ls -l
total 4
-rw-r--r--. 1 oracle oinstall 0 Sep 2 02:05 a
-rw-r--r--. 1 oracle oinstall 0 Sep 2 02:05 b
-rw-r--r--. 1 oracle oinstall 0 Sep 2 02:05 c
-rw-r--r--. 1 oracle oinstall 0 Sep 2 02:05 d
-rw-r--r--. 1 oracle oinstall 0 Sep 2 02:05 e
-rw-r--r--. 1 oracle oinstall 0 Sep 2 02:05 f
-rw-r--r--. 1 oracle oinstall 0 Sep 2 02:05 g
drwxr-xr-x. 2 oracle oinstall 4096 Aug 7 07:25 test2
Я хотел удалить все, кроме test2.
Итак, я начал с
[oracle@SJOAM test]$ find test2 -prune -o -print
[oracle@SJOAM test]$
Ничего не вернуть
q1) почему указанная выше команда без -name не показывает остальные файлы? но с "-name", показанным ниже, показывая остальные файлы?
[oracle@SJOAM test]$ find -name test2 -prune -o -print
.
./e
./a
./b
./d
./f
./g
./c
С -name я могу видеть остальные файлы. Но я все еще вижу "." текущая папка.
[oracle@SJOAM test]$ find -name test2 -prune -o -exec rm -r '{}' \;
rm: cannot remove directory: `.'
[oracle@SJOAM test]$ ls -l
total 4
drwxr-xr-x. 2 oracle oinstall 4096 Aug 7 07:25 test2
Ну, все файлы удалены. Но я вроде чувствую, что это не правильный путь - это попытка удалить "."
q2) Как я могу предотвратить удаление "." ?
Также,
[oracle@SJOAM test]$ find test2
test2
test2/a9
test2/a8
test2/a7
test2/a10
[oracle@SJOAM test]$ find -name test2
./test2
[oracle@SJOAM test]$
q3) Почему -name показывает ./test, но без -name не показывает "./"?