About
directory management with bash.
Structure
Management
Current
See How you can work in Bash with the working directory (ie current, PWD, OLDPWD)
Get
the space by directory recursively
To get the space by directory, you can use the du command. It summarize disk usage of each FILE, recursively for directories.
With a redirection, you can export the result and find the directories that used the most space.
du mydirectory > du.csv
the space for one directory
For one directory:
du -hs
13G
where the options mean:
- s: summary
- h: human readable
the top disk usage by directory
The following command gives the top 10 subdirectory from the current directory by disk usage.
du | grep logs | sort -n | cut -f 2- | while read a; do du -sh "$a"; done | tail
3.3M ./instances/instance1/diagnostics/logs/OracleBIJavaHostComponent
6.3M ./instances/instance1/diagnostics/logs/OPMN/opmn
6.3M ./instances/instance1/diagnostics/logs/OPMN
14M ./instances/instance1/diagnostics/logs/OracleBIPresentationServicesComponent/coreapplication_obips1
14M ./instances/instance1/diagnostics/logs/OracleBIPresentationServicesComponent
25M ./instances/instance1/diagnostics/logs
40M ./Oracle_BI1/cfgtoollogs/oui
40M ./oracle_common/cfgtoollogs/oui
40M ./oracle_common/cfgtoollogs
40M ./Oracle_BI1/cfgtoollogs
where:
- du list the subdirectory with the disk usage
- grep filters the result for only the logs subdirectory
- sort sort the result
- tail shows only the 10 last lines
For OBI:
$fmw_home/user_projects/domains/bifoundation_domain/servers/AdminServer/logs
$fmw_home/user_projects/domains/bifoundation_domain/servers/bi_server1/logs
$fmw_home/instances/instance1/diagnostics/logs/OracleBIServerComponent/coreapplication_obis1
Loop through children
- files
#!/bin/bash
for filename in /$baseDir/dirPath/*.txt; do
echo $filename
done
- directory
for childPath in /my/directory/path/*; do
if [ -d "$childPath" ]; then
REPO_DIRS+=("$childPath")
fi
done
Check if a path is a directory
if [ -d /my/path ]; then
echo 'This is a directory'
else
echo 'This is not a directory'
fi
Check if a directory is not empty
if [ -n "$(ls -A "$GDRIVE_MOUNT_PATH")" ]; then
echo_err "Google Drive Mount Directory ($GDRIVE_MOUNT_PATH) is not empty."
exit 1
fi
make a zip file
see also: zip
tar -pczf myDirectory.tar.gz myDirectory/
move a directory
mv /path/to/source /path/to/dest
where:
- mv = move Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Transfer a directory
Transferring folders
- rsync
- or with the following pipeline (compress, buffer, transfer and uncompress)
tar cf - [source-path] | mbuffer -m 1024M | ssh [server] '(cd /[destination-path]; tar xf -)'
copy a directory
cp -r /Path/To/sourceDirectory /Path/To/TargetDirectory
where:
- cp = copy
- r = recursive
It will create the target directory.
Delete a directory
- Remove an empty directory
rmdir directoryName
- Remove a directory and all sub without prompting
rm -rf letters/
Rename a directory
mv myDirectoryName MyNewDirectoryName
Create directory
- With parent
mkdir -p /parentDoesnExist/myDir