Другая статья MSDN, которая предоставляет некоторую DOS и DON'Ts и рекомендации для какой метод сравнения использовать в различных случаях: Новые Рекомендации для Использования Строк в Microsoft.NET 2.0
Предполагая, что вы хотите что-то сделать только с файлами, простое решение - проверить, является ли $ i файлом:
for i in *
do
if test -f "$i"
then
echo "Doing somthing to $i"
fi
done
Вы действительно должны всегда проводить такие тесты, потому что вы почти наверняка не ' Я не хочу обращаться с файлами и каталогами одинаково. Обратите внимание на кавычки вокруг символа «$ i», которые предотвращают проблемы с именами файлов, содержащими пробелы.
find
может быть тем, что вам нужно.
find . | while read file; do
# do something with $file
done
Или может быть так:
find . -exec <command> {} \;
Если вы не хотите, чтобы поиск включал подкаталоги, вам может потребоваться добавить комбинацию -type f
и -maxdepth 1
для команды поиска. Подробности см. На странице руководства find .
Это зависит от того, собираетесь ли вы вводить это в командной строке и какую команду применяете к файлам.
Если она введена, вы можете выбрать второй вариант и замените команду чем-нибудь безобидным. Например, мне нравится использовать echo вместо mv или rm.
Поместите все в одну строку:
for i in * ; do command $i; done
Когда это сработает - или вы увидите, где это не удается, и безопасно ли это, вы можете нажать стрелку вверх , отредактируйте команду и повторите попытку.
это должно помочь:
find -type d -print0 | xargs -n 1 -0 echo "your folder: {} !"
find -type f -print0 | xargs -n 1 -0 echo "your file: {} !"
print0 / 0 позволяет избежать проблем с пробелами