initial save
 
Tags: Mobile edit Mobile web edit
 
(20 intermediate revisions by the same user not shown)
Line 1: Line 1:
=== Copy including hidden files ===
= Finding or searching through files and folders =
 
 
== Search for a string ==
 
A case-sensitive search through all of the files from current folder and below.
 
<syntaxhighlight lang="bash">
$ find . | xargs grep -s "mystring" | more
</syntaxhighlight>
 
A ''case-insensitive'' search through all of the files from current folder and below.
 
<syntaxhighlight lang="bash">
$ find . | xargs grep -si "mystring" | more
</syntaxhighlight>
 
A ''case-insensitive'' search through all of the files from current folder and below, and truncate long search results.
 
<syntaxhighlight lang="bash">
$ find . | xargs grep -sioE ".{0,20}mystring.{0,20}" | more
</syntaxhighlight>
 
An alternative way to search for keywords.
 
<source lang="bash">
$ cat file.txt | grep word
$ grep -r -e word /etc"
</source>
 
 
= Copy including hidden files =
 
* ''Last tested on Ubuntu 14.04.2 LTS (trusty)''
* ''Last tested on Ubuntu 14.04.2 LTS (trusty)''
<source lang="bash" highlight="1">
 
<source lang="bash">
$ cp -r folder1/. target/
$ cp -r folder1/. target/
</source>
</source>
= Delete files =
== Delete files recursively ==
* ''Lasted tested on Ubuntu 16.04.2 LTS (xenial)
<source lang="bash">
$ find . -type f -name "*.mp4" -exec rm {} \;
</source>
== Fastest way to delete a folder ==
* {{testedon|2021-03-09|RHEL 8.3}}
<source lang="console">
$ mkdir empty
$ rsync -a --delete empty/ foldername
</source>
== Another method of deleting files under a folder ==
<source lang="console">
$ ls -f1 | xargs rm
</source>
= Setting a default group for a folder =
* ''Last tested on Ubuntu 16.04 LTS (xenial)''
This is to set permission for an '''existing''' folder for collaboration.  This assumes the group name to be <span class="package">dev</span>, and the folder to be <span class="shell">/srv/www/project</span>.
This sets <code>setgid</code> bit on the folder.
<source lang="bash">
$ sudo find /srv/www/project -type d -exec chgrp dev {} +
$ sudo find /srv/www/project -type d -exec chmod g+s {} +
</source>
Make it writable by the group.
<source lang="bash">
$ sudo chmod -R g+w /srv/www/project
</source>
Change group ownership of existing files.
<source lang="bash">
$ sudo chown -R mhan:dev /srv/www/project
</source>
These commands should be executed for a '''new''' folder.
<source lang="bash">
$ sudo chgrp dev /srv/www/project
$ sudo chmod g+s /srv/www/project
</source>
= Unpacking gz files =
The files are compressed using Lempel-Ziv (LZ77) algorithm. GNU zip (gzip/gunzip) is used for this.
<syntaxhighlight lang="bash">$ gunzip file.gz</syntaxhighlight>
or
<syntaxhighlight lang="bash">$ gzip -d file.gz</syntaxhighlight>
= Zip a folder =
<source lang="bash">
$ zip -r test.zip ./test
</source>
= Mirror a folder =
{{testedon|2020-06-08|CentOS 8}}
Copy ALL and keep EVERYTHING same without deleting the source, but deleting files on the target folder that are not found in the source.
<source lang="console">
$ rsync --delete -HAXavr /source/folder/foldername/ /target/folder/foldername/
</source>
* ''Last tested on Ubuntu 16.04 LTS (xenial)''
This also works between servers. The first one is on the same server.
Explanation of parameters used:
* -a: archive - preserve permissions, ownership, and timestamps
* -v: verbose
* -z: compress
<syntaxhighlight lang="bash" highlight="1">
$ rsync -azv /folder_a/ /folder_b/
</syntaxhighlight>
This one is between different servers.
<syntaxhighlight lang="bash" highlight="1">
$ rsync -azv ~/folder_a/ mhan@tom.myserver.com:~/folder_b/
</syntaxhighlight>
= Move files =
<syntaxhighlight lang="bash" highlight="1">
$ rsync --remove-source-files -HAXzvhr /source/chanbara/* ./chanbara/
</syntaxhighlight>
= Move files older or less than x days =
* ''Last tested on Ubuntu 14.04.5 LTS (trusty)''
Make a list of files to copy.  Example here is a list of files older than 365 days.
<syntaxhighlight lang="bash" highlight="1">
$ find . -type f -mtime +365 > /tmp/rsyncfiles
</syntaxhighlight>
This is a list of files younger than 365 days
<syntaxhighlight lang="bash" highlight="1">
$ find . -type f -mtime -365 > /tmp/rsyncfiles
</syntaxhighlight>
rsync across the network to another server. This command deletes the source files after they are moved.
<syntaxhighlight lang="bash" highlight="1">
$ rsync --remove-source-files -zvh --files-from=/tmp/rsyncfiles . mhan@zinc.wherever.com:/target/folder/
</syntaxhighlight>
[[Category:System administration]]