Как переместить все файлы вверх в, представляют подпапки здесь

Процесс может только записать в свое собственное /proc/pid/comm. Таким образом, так как это кажется, что можно изменить код IDE, у Вас может просто быть он, пишут в /proc/self/comm.

Другая опция состояла бы в том, чтобы изменить имя своего исполняемого файла Python и затем измениться весь #! строки, но это может быть ЛАВАШЕМ.

Другой — более болезненный — опции написали бы некоторый код C и использование LD_PRELOAD или ptrace.

8
02.02.2015, 13:52
4 ответа

Да, это ограничение на суммарный размер аргументов и окружения, передаваемых в системный вызов execve() при выполнении внешней команды.

С помощью zsh можно использовать его сборку mv вместо:

zmodload -F zsh/files +b:zf_mv
zf_mv ./*/* .

или использовать zargs для разбиения списка на управляемые части:

autoload zargs
zargs -Ifiles ./*/* -- mv files .

С помощью ksh93:

command -x mv ./*/* .

В GNU xargs и GNU mv с оболочкой, где printf встроен (большинство из которых mksh является заметным исключением):

printf '%s\0' ./*/* | xargs -r0 mv -t .
2
27.01.2020, 20:11

Я предполагаю, что расширение ваших аудиофайлов - это .mp3

find <AudioFolderPath> -name '*.mp3' -exec mv -it <YourTargetFolder> {} +

Примечания:

  • Замените .mp3 на расширение ваших аудиофайлов

  • Замените на родительскую папку, содержащую ваши вложенные папки.

  • Замените <Ваша целевая папка> на путь к папке, в которую нужно поместить все файлы.

  • Если буксировать файлы из разных вложенных папок с одинаковым именем , то будет перемещен только один файл.

редактирование : Как сказано в Costas : "Переключатель -i делает mv интерактивным, он будет запрашивать перед перезаписью существующих файлов"

.
7
27.01.2020, 20:11

Довольно портативным решением могло бы быть..:

найти все файлы в каждой подпапке и переместить их в текущий каталог

find ./*/ -type f -print | xargs mv -i "{}" ./

Можно добавить |, например, "\.au$|\.mp3$|\.ac3$", чтобы убедиться, что найденные файлы - это файлы с расширением аудио (добавляйте столько расширений, сколько необходимо, чтобы охватить все типы, я просто предоставляю 3 общих)

.
0
27.01.2020, 20:11
find . -type f -mindepth 2 -exec mv -t ./ {} +

Обратите внимание, что эта команда перезапишет любые файлы с тем же именем. Вы можете использовать ее для запроса перед перезаписью:

find . -type f -mindepth 2 -exec mv -it ./ {} +

Объяснение

  • -тип f : найти только обычные файлы.
  • -глубина 2 : находим только файлы в поддиректориях.
  • -exec mv -it ./ {}: -exec означает "выполнить эту -команду для каждого найденного файла". Команда {} будет заменена именами файлов. Переключатель -i делает mv интерактивным, он будет запрашивать перед перезаписью существующих файлов, а -t устанавливает целевую директорию на ./.
  • + : соберите файлы вместе (в одной строке аргумента) так много, чтобы оболочка могла работать с командой для вызова команды минимальное время (не одно за другим, а от одного до нескольких).

Что касается последующих удалений пустых папок, вы можете использовать тот же приемник:

find . -type d -empty -delete
4
27.01.2020, 20:11

Теги

Похожие вопросы