Процесс может только записать в свое собственное /proc/pid/comm
. Таким образом, так как это кажется, что можно изменить код IDE, у Вас может просто быть он, пишут в /proc/self/comm
.
Другая опция состояла бы в том, чтобы изменить имя своего исполняемого файла Python и затем измениться весь #!
строки, но это может быть ЛАВАШЕМ.
Другой — более болезненный — опции написали бы некоторый код C и использование LD_PRELOAD
или ptrace
.
Да, это ограничение на суммарный размер аргументов и окружения, передаваемых в системный вызов 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 .
Я предполагаю, что расширение ваших аудиофайлов - это .mp3
find <AudioFolderPath> -name '*.mp3' -exec mv -it <YourTargetFolder> {} +
Замените .mp3
на расширение ваших аудиофайлов
Замените
на родительскую папку, содержащую ваши вложенные папки.
Замените <Ваша целевая папка>
на путь к папке, в которую нужно поместить все файлы.
Если буксировать файлы из разных вложенных папок с одинаковым именем , то будет перемещен только один файл.
редактирование : Как сказано в Costas :
"Переключатель -i
делает mv
интерактивным, он будет запрашивать перед перезаписью существующих файлов"
Довольно портативным решением могло бы быть..:
найти все файлы в каждой подпапке и переместить их в текущий каталог
find ./*/ -type f -print | xargs mv -i "{}" ./
Можно добавить |, например, "\.au$|\.mp3$|\.ac3$"
, чтобы убедиться, что найденные файлы - это файлы с расширением аудио (добавляйте столько расширений, сколько необходимо, чтобы охватить все типы, я просто предоставляю 3 общих)
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