Какую команду можно выполнить, чтобы содержимое (и вложенные папки) всех каталогов «Мои документы» были перечислены следующим образом:
/Documents and Settings/username1/My Documents/filename /Documents and Settings/username1/My Documents/subdir/filename /Documents and Settings/username2/My Documents/filename
В основном существует множество пользователей, но почти ни у кого нет ничего в их папке «Мои документы». Я просто хочу найти и показать содержимое тех пользователей, у которых есть документы.
РЕДАКТИРОВАТЬ: Каждый каталог "имя пользователя" содержит много подкаталогов. Я только хочу перечислить дерево ниже папки «Мои документы», но сделать это для всех имен пользователей одновременно.
Объединяя первые два ответа, используйте find и ls -R:
найти "/ Documents and settings" -name "Мои документы" -exec ls -R {} \;
Это найдет все каталоги « Мои документы» и перечислит все, что находится под ними, с полными путями. Вам нужны кавычки, так как в именах каталогов есть пробелы.
Изменить: объяснение того, как это работает. Он начинается с / Documents and settings и ищет любой файл или каталог, который соответствует моим документам . Для каждого, который он находит, он заменяет путь на {} в ls. \; означает конец команды.
Что значит {} \; имею в виду?
Dane O'Connor 15 лет назад
0
эта команда выдает: «отсутствует аргумент для -exec»
Dane O'Connor 15 лет назад
0
Убедитесь, что у вас есть \; (точка с запятой)
KeithB 15 лет назад
0
Ах, как только вы объяснили, я заметил, что между '{}' и '\;' не было пробела. Отлично. Я предполагаю, что '\;' это для предотвращения расширения оболочки ';'?
Dane O'Connor 15 лет назад
0
Стреляй, это список всего содержимого документов и настроек
Dane O'Connor 15 лет назад
0
2
iddqd
Просто чтобы добавить в коллекцию, ls -R на самом деле не выдает хороший вывод, поэтому вместо этого я использую команду дерева
find "/Documents and settings" -name "My Documents" -exec tree -f -i --noreport {} \;
1
linux_is_for_desktop
ls -R path_to_your_dir
или же
ls -lR path_to_your_dir
для лучшего обзора
Тем не менее, лучший вид достигается с
find path_to_your_dir
ПРИМЕЧАНИЕ: -R означает рекурсивный
посмотрите мое редактирование, мне нужно только дерево под каждой папкой моих документов. Не дерево под Документы и Настройки.
Dane O'Connor 15 лет назад
0
0
lyarwood
Вы можете использовать команду # find your_dir
посмотрите мое редактирование, мне нужно только дерево под каждой папкой моих документов. Не дерево под Документы и Настройки.
Dane O'Connor 15 лет назад
0
0
wallenborn
Если вы хотите увидеть путь и не хотите иметь полный рекурсивный список -R, это, похоже, делает примерно то, что вы хотите, хотя это немного неуклюже:
find . -type d -name '*Documents' ! -empty | (while read d; do echo $d; ls -la $d; done)
0
nagul
Если вы хотите получить рекурсивный список файлов и папок в разделе « Документы и настройки» / «Пользователь» / «Мои документы» :
Если вам нужны только файлы и папки непосредственно в разделе «Документы и настройки» / «Пользователь» / «Мои документы»:
ls -dr Documents\ and\ Settings/*/My\ Documents/*
Первый будет содержать файл, такой как « Документы и настройки» / «Пользователь» / «Мои документы» / dir1 / file1), тогда как второй будет содержать список только « Документы и настройки» / «Пользователь» / «Мои документы» / dir1 ».