Linux - File

1 - About

Linux file management

3 - Basic

4 - Type

4.1 - hidden

A full stop '.' before the name of the file makes it a hidden file. Example '.bash'

Sh - Hidden files

4.2 - Metadata

5 - Management

5.1 - Get

5.1.1 - Filename and extension

Using Parameters Expansion Removal


fileFullName=$(basename "$filePath")
# or
fileFullName="${filePath##*/}"
extension="${fileFullName##*.}"
filename="${fileFullName%.*}"

5.1.2 - parent directory

  • From a path string where the file does not exist

VAR=/filedoesnt/exist
echo ${VAR%/*}


/filedoesnt

  • dirname returns the first parent of an existing path file.

dirname "dir/file"


dir

5.1.3 - File Permission

5.1.4 - File exist


if [ ! -f $PATH ]; then
    echo "File $PATH not found!"
fi

5.1.5 - Absolute path


ABSOLUTE_PATH=$(realpath "${FILE_NAME}")

5.1.6 - Size

with Linux - ls (List directory content)


ls -lh myFile | awk '{ print $5 }'

where:

  • -lh shows a human readable size
  • an awk will extract the 5de column of the ls output

5.2 - Monitoring the size of a (log) file

Example:


# the program that run
program=unzip
# the log of the progam
logfile='restoreAll.log'
# Don't touch below, the program
count=0
while kill -0 $(pgrep ${program}) 2> /dev/null; do
    count=$(( $count + 1 ))
	size=$(ls -lh ${logfile} | awk '{ print $5 }')
    echo "${count} - Process is running and the log is ${size}"
    sleep 10
done
echo "${count} - Process has exited"

5.3 - Comparison


cmp --silent $old $new || echo "files are different"
cmp -b $old $new 

See also : diff

5.4 - Diff


diff file1 file2 | cat -t

where:

  • ^M for CR,
  • ^I for tab

See also: comparison

5.5 - Filter a list of files ?

This command below gives you all files in the current directory which begin by elfutils


dir | grep -i elfutils


elfutils-0.137-3.el5.i386.rpm
elfutils-devel-0.137-3.el5.i386.rpm
elfutils-devel-static-0.137-3.el5.i386.rpm
elfutils-libelf-0.137-3.el5.i386.rpm
elfutils-libelf-devel-0.137-3.el5.i386.rpm
elfutils-libelf-devel-static-0.137-3.el5.i386.rpm
elfutils-libs-0.137-3.el5.i386.rpm

  • find can do it recursviely

5.6 - Remove a file?

Permission: In UNIX and Linux, the ability to remove a file is determined by the access bits of parent directory


chmod 777 .
chown hi-adm:hi-adm .

With the command rm

Example:

  • Basic

rm filename.extension

  • Prompts for confirmation before removing a file

rm -i filename.extension

  • Force removal of the file regardless of it bieng write-protected or open

rm -f filename.extension
  • Remove files recursively in 'directory'

rm -r directory

More … perform the man commando


man rm

5.7 - Copy 1 or multiple file

cp - Copy one or more files to another location.

Example::

  • Copy of a directory with resistivity:

cp -r dirtocopy newdir

  • Copy two files

cp myFile1.txt myFile2.txt myDirDestination

  • Copy all files of directory

cp * myDirDestination
# or
cp /myDirSource/* /myDirDestination

  • Copy all txt files (with a pattern)

cp *.txt myDirDestination

5.8 - Move / Rename

  • mv - Moves or renames file

Example:


mv file.log file.$(date "+%Y.%m.%d-%H.%M.%S").log

5.9 - Concatenate


cat file1 file2 > finalFile

# example with cert
cat first_cert.pem second_cert.pem > combined_cert.pem

5.10 - Transfer

5.11 - See the content

5.12 - Search a file by name

  • locate - List files that match a pattern.

Locate all file with a regular expression. In this example all file which begin with sp and end up with the extension msb.


locate -r "sp.*\.msb"

  • find - search for files in a directory hierarchy.

find /my/directory -name myFile.extension

5.13 - Search files based on time


touch -d '2011-12-31 10:22' foo
find . -newer foo

See all other files in the time section of the find command

5.14 - Search the content of files

5.15 - File Architecture (32 or 64 bit)

File Architecture


file fileName

Example:


file java


/bin/java: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

5.16 - Iterate


OLDIFS=$IFS; IFS=$'\n'; 
filelines=`cat $filename`
for line in $filelines ; do
    echo $line
done
IFS=$OLDIFS

5.17 - Security / Capabilty

See setcap - set file capabilities.

A file may also be an executable one and they may got capabilities such as be able to take the port 80

5.18 - Processing

6 - List of command

  • ls - List contents of a directory
  • which - Displays path to command
  • whereis - locate the binary, source, and manual page files for a command

7 - Content


Data Science
Data Analysis
Statistics
Data Science
Linear Algebra Mathematics
Trigonometry

Powered by ComboStrap