<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://infocepo.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Categorize</id>
	<title>Categorize - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://infocepo.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Categorize"/>
	<link rel="alternate" type="text/html" href="https://infocepo.com/wiki/index.php?title=Categorize&amp;action=history"/>
	<updated>2026-10-27T06:25:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://infocepo.com/wiki/index.php?title=Categorize&amp;diff=747&amp;oldid=prev</id>
		<title>Tcepo: Created page with &quot;&lt;pre&gt; == fix type 2 == find -type f |sed -rn &#039;s#^(.*/|)([^/]*)\.([^\./]*[a-zA-Z]{2,}[^\./]*)[\.\-]([0-9TZtz_\.\-]{4,})$#\1;\2;\3;\4#p&#039; |while IFS=&#039;;&#039; read dirMy fileMy typeMy...&quot;</title>
		<link rel="alternate" type="text/html" href="https://infocepo.com/wiki/index.php?title=Categorize&amp;diff=747&amp;oldid=prev"/>
		<updated>2019-10-29T13:25:15Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt; == fix type 2 == find -type f |sed -rn &amp;#039;s#^(.*/|)([^/]*)\.([^\./]*[a-zA-Z]{2,}[^\./]*)[\.\-]([0-9TZtz_\.\-]{4,})$#\1;\2;\3;\4#p&amp;#039; |while IFS=&amp;#039;;&amp;#039; read dirMy fileMy typeMy...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
== fix type 2 ==&lt;br /&gt;
find -type f |sed -rn &amp;#039;s#^(.*/|)([^/]*)\.([^\./]*[a-zA-Z]{2,}[^\./]*)[\.\-]([0-9TZtz_\.\-]{4,})$#\1;\2;\3;\4#p&amp;#039; |while IFS=&amp;#039;;&amp;#039; read dirMy fileMy typeMy dateMy ;do mv -vn &amp;quot;${dirMy}${fileMy}.${typeMy}&amp;quot;?&amp;quot;${dateMy}&amp;quot; &amp;quot;${dirMy}${dateMy}-${fileMy}.${typeMy}&amp;quot; ;done&lt;br /&gt;
#== Categorize types ==&lt;br /&gt;
nbTypes=32&lt;br /&gt;
optionsMy= #update&lt;br /&gt;
find -empty -type d -delete&lt;br /&gt;
#all dirs&lt;br /&gt;
&amp;gt;/tmp/typeList$$&lt;br /&gt;
&amp;gt;/tmp/typeList$$.new&lt;br /&gt;
ls -a1 |grep -vE &amp;quot;^\.{,2}$&amp;quot; |while read lineMy ;do&lt;br /&gt;
  if [ -d &amp;quot;${lineMy}&amp;quot; ] ;then&lt;br /&gt;
#    echo &amp;quot;${lineMy}&amp;quot; ;done |while read lineMy ;do&lt;br /&gt;
    #check if type dir&lt;br /&gt;
    MyPatern=&amp;#039;^.*\.([a-z0-9A-Z_]+)$&amp;#039;&lt;br /&gt;
    typeName=&amp;quot;$(find &amp;quot;${lineMy}&amp;quot; -type f |head -1 |sed -rn &amp;quot;s#$MyPatern#\1#p&amp;quot;)&amp;quot;&lt;br /&gt;
    if [ &amp;quot;${typeName}&amp;quot; == &amp;quot;${lineMy}&amp;quot; ] ;then&lt;br /&gt;
      echo &amp;quot;${typeName}&amp;quot; &amp;gt;&amp;gt;/tmp/typeList$$&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;${lineMy}&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;${lineMy}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done &amp;gt;/tmp/categorize$$.statNewTypes&lt;br /&gt;
[ &amp;quot;${optionsMy}&amp;quot; != &amp;quot;update&amp;quot; ] &amp;amp;&amp;amp;cat /tmp/categorize$$.statNewTypes |while read dirName2 ;do&lt;br /&gt;
    find &amp;quot;$dirName2&amp;quot; -type f |head -${nbTypes}&lt;br /&gt;
  done |head -1024 |while read MyFile ;do&lt;br /&gt;
    MyPatern=&amp;#039;^.*[^/]+\.([a-z0-9A-Z]+)$&amp;#039;&lt;br /&gt;
    echo &amp;quot;$MyFile&amp;quot; |sed -rn &amp;quot;s#$MyPatern#\1#p&amp;quot; |head -1&lt;br /&gt;
#  done |sort |uniq -c |sort -gr |head -${nbTypes} |awk &amp;#039;{if ( $1 &amp;gt; 4 ) {$1=&amp;quot;&amp;quot; ;print }}&amp;#039; |cut -c-1 --complement &amp;gt;&amp;gt;/tmp/typeList$$.new&lt;br /&gt;
  done |sort |uniq -c |sort -gr |head -${nbTypes} |awk &amp;#039;{$1=&amp;quot;&amp;quot; ;print }&amp;#039; |cut -c-1 --complement &amp;gt;&amp;gt;/tmp/typeList$$.new&lt;br /&gt;
(cat /tmp/typeList$$ ;cat /tmp/typeList$$.new) |sort -u &amp;gt;/tmp/typeList$$2&lt;br /&gt;
mv -f /tmp/typeList$$2 /tmp/typeList$$&lt;br /&gt;
cat /tmp/typeList$$.new |while read MyType ;do&lt;br /&gt;
  mkdir &amp;quot;${MyType}&amp;quot; 2&amp;gt;/dev/null &amp;amp;&amp;amp;chown noname &amp;quot;${MyType}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
ls -a1 |grep -vE &amp;quot;^\.{,2}$&amp;quot; |grep -vw -f /tmp/typeList$$ &amp;gt;/tmp/dirList$$&lt;br /&gt;
cat /tmp/dirList$$ |while read lineMy ;do&lt;br /&gt;
  find &amp;quot;${lineMy}&amp;quot; -type f&lt;br /&gt;
done |while read MyFile ;do&lt;br /&gt;
  typeName=$(echo &amp;quot;${MyFile}&amp;quot; |sed -rn &amp;#039;s#^(.*)\.([^\.]*)|([^\.]+)$#\2#p&amp;#039;)&lt;br /&gt;
  echo &amp;quot;${typeName}&amp;quot; |grep -E ^- ||(&lt;br /&gt;
  if [ ! -z &amp;quot;$(grep -x &amp;quot;${typeName}&amp;quot; /tmp/typeList$$)&amp;quot; ] ;then&lt;br /&gt;
    dirName=&amp;quot;$(dirname &amp;quot;${MyFile}&amp;quot; )&amp;quot;&lt;br /&gt;
    mkdir -p &amp;quot;${typeName}/${dirName}&amp;quot; ||echo &amp;quot;${typeName}/${dirName}&amp;quot;&lt;br /&gt;
    chown --reference=&amp;quot;${dirName}&amp;quot; &amp;quot;${typeName}/${dirName}&amp;quot;&lt;br /&gt;
    chmod --reference=&amp;quot;${dirName}&amp;quot; &amp;quot;${typeName}/${dirName}&amp;quot;&lt;br /&gt;
    mv -vn &amp;quot;${MyFile}&amp;quot; &amp;quot;${typeName}/${MyFile}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  )&lt;br /&gt;
done&lt;br /&gt;
find -type d -exec chown noname {} \;&lt;br /&gt;
&lt;br /&gt;
== dir fix duplicate words ==&lt;br /&gt;
#directories&lt;br /&gt;
detox -r ./* ./\.[^\.]* ./\.\.?*&lt;br /&gt;
~/sh/caseFix.sh&lt;br /&gt;
find -xdev -empty -type d -delete&lt;br /&gt;
~/sh/remove-duplicate-words-dir.sh&lt;br /&gt;
&lt;br /&gt;
#=== Rename orphans files ===&lt;br /&gt;
~/sh/caseFix.sh&lt;br /&gt;
find -xdev -type l -delete&lt;br /&gt;
find -xdev -empty -delete&lt;br /&gt;
~/sh/rename-orphans-files.sh&lt;br /&gt;
find -xdev -empty -delete&lt;br /&gt;
find -xdev -type d -exec chown noname {} \;&lt;br /&gt;
&lt;br /&gt;
== metadata fix duplicate words ==&lt;br /&gt;
#directories&lt;br /&gt;
detox -r ./* ./\.[^\.]* ./\.\.?*&lt;br /&gt;
~/sh/caseFix.sh&lt;br /&gt;
find -xdev -empty -type d -delete&lt;br /&gt;
~/sh/remove-duplicate-words-dir.sh&lt;br /&gt;
&lt;br /&gt;
#files&lt;br /&gt;
find ./* ./\.[^\.]* ./\.\.?* -xdev -type f |while read My ;do&lt;br /&gt;
  oldName=$(basename &amp;quot;${My}&amp;quot; |sed -rn &amp;#039;s#^(.*)\.([^\.]*)|([^\.]+)$#\1\3#p&amp;#039;)&lt;br /&gt;
  typeName=$(basename &amp;quot;${My}&amp;quot; |sed -rn &amp;#039;s#^(.*)\.([^\.]*)|([^\.]+)$#\2#p&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
  dirName=&amp;quot;$(dirname &amp;quot;$My&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # remove word from dir&lt;br /&gt;
  #echo &amp;quot;${oldName}&amp;quot; |tr &amp;#039;_, &amp;#039; &amp;#039;-&amp;#039; &amp;gt;/tmp/newName$$&lt;br /&gt;
  echo &amp;quot;${oldName}&amp;quot; |tr &amp;#039;_, &amp;#039; &amp;#039;-&amp;#039; &amp;gt;/tmp/newName$$&lt;br /&gt;
  (echo &amp;quot;${dirName}&amp;quot; |sed -r &amp;quot;s#[^[:alnum:]]#\n#gI&amp;quot; ;echo &amp;quot;${typeName}&amp;quot; )|grep . |sort -u |while read My2 ;do&lt;br /&gt;
    cat /tmp/newName$$ |sed -r &amp;quot;s#\b${My2}\b[^[:alnum:]]*##gI&amp;quot; &amp;gt;/tmp/newName$$2&lt;br /&gt;
    mv -f /tmp/newName$$2 /tmp/newName$$&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
  #reverse&lt;br /&gt;
  cat /tmp/newName$$ |rev &amp;gt;/tmp/newName$$2&lt;br /&gt;
  mv -f /tmp/newName$$2 /tmp/newName$$&lt;br /&gt;
  # remove duplicates&lt;br /&gt;
  countMy=32&lt;br /&gt;
  while [ ! -z &amp;quot;$(cat /tmp/newName$$ |sed -r &amp;quot;s#[^[:alnum:]]#\n#gI&amp;quot; |tr &amp;#039;[:upper:]&amp;#039; &amp;#039;[:lower:]&amp;#039; |grep . |sort |uniq -c |awk &amp;#039;{if ($1&amp;gt;1) print $2}&amp;#039; |tee /tmp/duplicatesWords$$)&amp;quot; ] ;do&lt;br /&gt;
    cat /tmp/duplicatesWords$$ |while read My2 ;do&lt;br /&gt;
      cat /tmp/newName$$ |sed -r &amp;quot;s#[^[:alnum:]]*\b${My2}\b##I&amp;quot; &amp;gt;/tmp/newName$$2&lt;br /&gt;
      mv -f /tmp/newName$$2 /tmp/newName$$&lt;br /&gt;
    done&lt;br /&gt;
    countMy=$((countMy-1)) &amp;amp;&amp;amp; [ $countMy -le 0 ] &amp;amp;&amp;amp;break&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
  #newName=$(cat /tmp/newName$$ |rev |sed -r &amp;#039;s#\.+#\.#g&amp;#039; |sed -r &amp;#039;s#\-+#-#g&amp;#039; |sed -r &amp;#039;s#\.\-#-#g&amp;#039; |sed -r &amp;#039;s#\-\.#-#g&amp;#039; |sed -r &amp;#039;s#\-+$##&amp;#039; |sed -r &amp;#039;s#\.+$##&amp;#039; |sed -r &amp;#039;s#^\-+##&amp;#039; |sed -r &amp;#039;s#^\.+##&amp;#039;)&lt;br /&gt;
  newName=$(cat /tmp/newName$$ |rev |sed -r &amp;#039;s#[-\.]+$##&amp;#039; |sed -r &amp;#039;s#^[-\.]+##&amp;#039; |sed -r &amp;#039;s#[-\.]{2,}#-#g&amp;#039;)&lt;br /&gt;
  newType=&amp;quot;${typeName}&amp;quot;&lt;br /&gt;
  if [ ! -z &amp;quot;${typeName}&amp;quot; ] ;then&lt;br /&gt;
    typeName=&amp;quot;.${typeName}&amp;quot;&lt;br /&gt;
    newType=&amp;quot;$(echo $typeName |tr &amp;#039;[:upper:]&amp;#039; &amp;#039;[:lower:]&amp;#039;)&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  [ &amp;quot;${oldName}${typeName}&amp;quot; != &amp;quot;${newName}${newType}&amp;quot; ] &amp;amp;&amp;amp;mv -vn &amp;quot;${dirName}/${oldName}${typeName}&amp;quot; &amp;quot;${dirName}/${newName}${newType}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== classificate by small word ==&lt;br /&gt;
word1=Luc&lt;br /&gt;
[ ! -d &amp;quot;${word1}&amp;quot; ] &amp;amp;&amp;amp;mkdir &amp;quot;${word1}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${word1}&amp;quot;&lt;br /&gt;
find -type d -iname &amp;quot;*${word1}*&amp;quot; |grep -vE &amp;quot;^\.{,2}$&amp;quot; |grep -vE &amp;quot;^\./${word1}$&amp;quot; |grep -iE &amp;#039;\b&amp;#039;&amp;quot;${word1}&amp;quot;&amp;#039;\b&amp;#039; |while read lineMy ;do&lt;br /&gt;
  echo &amp;quot;== ${lineMy} ==&amp;quot;&lt;br /&gt;
  newPath=&amp;quot;${word1}/$(echo ${lineMy} |sed -r &amp;#039;s#\b&amp;#039;&amp;quot;${word1}&amp;quot;&amp;#039;\b##gI&amp;#039;)&amp;quot;&lt;br /&gt;
  newDir=&amp;quot;$(dirname &amp;quot;${newPath}&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [ -d &amp;quot;${newPath}&amp;quot; ] ;then&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot;/* &amp;quot;${lineMy}&amp;quot;/\.[^\.]* &amp;quot;${lineMy}&amp;quot;/\.\.?* &amp;quot;${newPath}&amp;quot;/.&lt;br /&gt;
    rmdir &amp;quot;${lineMy}&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    [ ! -d &amp;quot;${newDir}&amp;quot; ] &amp;amp;&amp;amp;mkdir -p &amp;quot;${newDir}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${newDir}&amp;quot;&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot; &amp;quot;${newPath}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
find -type f -iname &amp;quot;*${word1}*&amp;quot; |grep -vE &amp;quot;^\./${word1}/&amp;quot; |grep -iE &amp;#039;\b&amp;#039;&amp;quot;${word1}&amp;quot;&amp;#039;\b&amp;#039; |while read lineMy ;do&lt;br /&gt;
  echo &amp;quot;== ${lineMy} ==&amp;quot;&lt;br /&gt;
  newPath=&amp;quot;${word1}/$(echo ${lineMy} |sed -r &amp;#039;s#\b&amp;#039;&amp;quot;${word1}&amp;quot;&amp;#039;\b##gI&amp;#039;)&amp;quot;&lt;br /&gt;
  newDir=&amp;quot;$(dirname &amp;quot;${newPath}&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [ ! -f &amp;quot;${newPath}&amp;quot; ] ;then&lt;br /&gt;
    [ ! -d &amp;quot;${newDir}&amp;quot; ] &amp;amp;&amp;amp;mkdir -p &amp;quot;${newDir}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${newDir}&amp;quot;&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot; &amp;quot;${newPath}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
find -empty -type d -delete&lt;br /&gt;
find &amp;quot;${word1}&amp;quot; -type d -exec chown noname {} \;&lt;br /&gt;
&lt;br /&gt;
== classificate by word (5 or more letters) ==&lt;br /&gt;
word1=archive&lt;br /&gt;
[ ! -d &amp;quot;${word1}&amp;quot; ] &amp;amp;&amp;amp;mkdir &amp;quot;${word1}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${word1}&amp;quot;&lt;br /&gt;
find -xdev -type d -iname &amp;quot;*${word1}*&amp;quot; |grep -vE &amp;quot;^\.{,2}$&amp;quot; |grep -vE &amp;quot;^\./${word1}$&amp;quot; |while read lineMy ;do&lt;br /&gt;
  echo &amp;quot;== ${lineMy} ==&amp;quot;&lt;br /&gt;
  newPath=&amp;quot;${word1}/$(echo ${lineMy} |sed &amp;#039;s#&amp;#039;&amp;quot;${word1}&amp;quot;&amp;#039;##gI&amp;#039;)&amp;quot;&lt;br /&gt;
  newDir=&amp;quot;$(dirname &amp;quot;${newPath}&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [ -d &amp;quot;${newPath}&amp;quot; ] ;then&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot;/* &amp;quot;${lineMy}&amp;quot;/\.[^\.]* &amp;quot;${lineMy}&amp;quot;/\.\.?* &amp;quot;${newPath}&amp;quot;/.&lt;br /&gt;
    rmdir &amp;quot;${lineMy}&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    [ ! -d &amp;quot;${newDir}&amp;quot; ] &amp;amp;&amp;amp;mkdir -p &amp;quot;${newDir}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${newDir}&amp;quot;&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot; &amp;quot;${newPath}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
find -xdev -type f -iname &amp;quot;*${word1}*&amp;quot; |grep -vE &amp;quot;^\.{,2}$&amp;quot; |grep -vE &amp;quot;^\./${word1}/&amp;quot; |while read lineMy ;do&lt;br /&gt;
  echo &amp;quot;== ${lineMy} ==&amp;quot;&lt;br /&gt;
  newPath=&amp;quot;${word1}/$(echo ${lineMy} |sed &amp;#039;s#&amp;#039;&amp;quot;${word1}&amp;quot;&amp;#039;##gI&amp;#039;)&amp;quot;&lt;br /&gt;
  newDir=&amp;quot;$(dirname &amp;quot;${newPath}&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [ ! -f &amp;quot;${newPath}&amp;quot; ] ;then&lt;br /&gt;
    [ ! -d &amp;quot;${newDir}&amp;quot; ] &amp;amp;&amp;amp;mkdir -p &amp;quot;${newDir}&amp;quot; &amp;amp;&amp;amp;chown noname &amp;quot;${newDir}&amp;quot;&lt;br /&gt;
    mv -vn &amp;quot;${lineMy}&amp;quot; &amp;quot;${newPath}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
find -xdev -empty -type d -delete&lt;br /&gt;
find &amp;quot;${word1}&amp;quot; -type d -exec chown noname {} \;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tcepo</name></author>
	</entry>
</feed>