Моя цель — сопоставить определенные файлы из определенных подкаталогов. У меня следующая структура папок
`-- данные |-- а |-- а.txt |-- б |-- б.txt |-- с |-- c.txt |-- д |-- d.txt |-- е |-- e.txt |-- орг-1 | |-- a.org | |-- b.org | |-- org.txt | |-- пользователь-0 | | |-- a.txt | | |-- б.txt
Я пытаюсь перечислить файлы только внутри каталога данных. Я могу получить правильный результат, используя следующую команду в RHEL
найти ./testdir/ -iwholename "*/data/[!/].txt" а.txt б.txt c.txt д.txt е.txt
Если я запускаю ту же команду в Ubuntu, она не работает.
Может ли кто-нибудь объяснить, почему это не работает в Ubuntu?
Редактировать:
После некоторых тестов я понял, что, как я и написал, он работает правильно и в RHEL, и в Ubuntu. Проблема в другом. Файл, который у меня есть в системе Ubuntu, — это файлы данных.
Очень странно, что эти типы файлов не отображаются ни в RHEL, ни в Ubuntu.
[supratik@testserver ~]$ ls testprog/data/ a.txt данные.dat [supratik@testserver ~]$ файл testprog/data/a.txt testprog/data/a.txt: текст ASCII [supratik@testserver ~]$ файл testprog/data/data.dat testprog/data/data.dat: данные [supratik@testserver ~]$ find ./testprog/ -iwholename "*/data/[!/].txt" ./testprog/data/a.txt [supratik@testserver ~]$ find ./testprog/ -iwholename "*/data/[!/].dat"
решение1
Я только что проверил это на CentOS 5.6, 6.0 и Ubuntu 9.04, 10.04 и 11.04, и я получаю один и тот же ответ на всех из них, а именно:
find ./testdir/ -iwholename "*/data/[!/].txt"
./testdir/data/c.txt
./testdir/data/d.txt
./testdir/data/a.txt
./testdir/data/e.txt
./testdir/data/b.txt
Вы можете получить похожие результаты с помощью
Find ./testdir/data/ -maxdepth 1 -name '*.txt'