Не уверен, что полностью понял то, о чем вы спрашиваете.
Скорее всего, SA добавил записи ulimit в /etc/profile для продукта COTS (, обычно базы данных )или пользовательского приложения.
Причина, по которой вы видите другое значение через plimit, может заключаться в том, что пользователь/приложение могло установить другое значение, или оно могло быть получено другим механизмом управления ресурсами. т.е. :/etc/проект
Как двухэтапный -процесс:
Начиная с
.
├── a
│ ├── file1.pdf
│ ├── file1.txt
│ ├── file2.pdf
│ └── file2.txt
└── b
├── file1.pdf
└── file1.txt
1 )переместить файлы в каталог, названный в соответствии с их корневым именем:
├── a
│ ├── file1
│ │ ├── file1.pdf
│ │ └── file1.txt
│ └── file2
│ ├── file2.pdf
│ └── file2.txt
└─ b
└── file1
├── file1.pdf
└── file1.txt
2 )Итерация этих подкаталогов -при увеличении индекса и переместить/переименовать файлы
├── 1-file1.pdf
├── 1-file1.txt
├── 2-file2.pdf
├── 2-file2.txt
├── 3-file1.pdf
└── 3-file1.txt
Код (дляbash
)
# To be run with your Dir1 as the top directory.
tree.
for f in */* # iterate files in directories
do
dir="${f%.*}" # same with dropped extension
mkdir -p "$dir"
mv "$f" "$dir"
done
tree.
i=0
for d in */*/ # iterate subdirectories create above
do
(( ++i ))
for f in "$d"/*
do
mv "$f" $i-${f##*/} # drop path components and prefix with index
done
done
rmdir */*/ */
tree.
(вы, конечно, можете удалить вызовыtree
).
Начиная с:
.
├── a
│ ├── file1.pdf
│ ├── file1.txt
│ ├── file2.pdf
│ └── file2.txt
└── b
├── c
│ ├── file1.pdf
│ └── file1.txt
├── file1.pdf
└── file1.txt
Промежуточный шаг даст:
.
├── a
│ ├── file1
│ │ ├── file1.pdf
│ │ └── file1.txt
│ └── file2
│ ├── file2.pdf
│ └── file2.txt
└── b
├── c
│ └── file1
│ ├── file1.pdf
│ └── file1.txt
└── file1
├── file1.pdf
└── file1.txt
и окончательный:
├── 1-file1.pdf
├── 1-file1.txt
├── 2-file2.pdf
├── 2-file2.txt
├── 3-file1.pdf
├── 3-file1.txt
├── 4-file1.pdf
└── 4-file1.txt
Полный код:
shopt -s extglob
shopt -s globstar
shopt -s nullglob
tree.
dirs=( */ )
for f in **/*.*
do
dir="${f%.*}"
mkdir -p "$dir"
mv "$f" "$dir"
done
tree.
i=0
for d in **/
do
files=("$d"/*.*)
[[ ${#files[@]} -eq 0 ]] && continue
(( ++i ))
for f in "${files[@]}"
do
mv -v "$f" $i-${f##*/}
done
done
rm -r */
tree.
Этот код предполагает, что все ваши файлы имеют точку в имени (расширении ), а каталоги — нет.